Merge branch 'master' into glitch-soc/merge-upstream
Conflicts: - .eslintrc.yml Removed, as upstream removed it. - app/controllers/admin/statuses_controller.rb Minor code cleanup when porting one of our features. - app/models/account.rb Note length validation has changed upstream. We now use upstream's validation (dropped legacy glitch-soc account metadata stuff) but with configurable limit. - app/services/post_status_service.rb Upstream has added support for scheduled toots, refactoring the code a bit. Adapted our changes to this refactoring. - app/views/stream_entries/_detailed_status.html.haml Not a real conflict, changes too close. - app/views/stream_entries/_simple_status.html.haml Not a real conflict, changes too close.
This commit is contained in:
22
app/validators/note_length_validator.rb
Normal file
22
app/validators/note_length_validator.rb
Normal file
@@ -0,0 +1,22 @@
|
||||
# frozen_string_literal: true
|
||||
|
||||
class NoteLengthValidator < ActiveModel::EachValidator
|
||||
def validate_each(record, attribute, value)
|
||||
record.errors.add(attribute, I18n.t('statuses.over_character_limit', max: options[:maximum])) if too_long?(value)
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def too_long?(value)
|
||||
countable_text(value).mb_chars.grapheme_length > options[:maximum]
|
||||
end
|
||||
|
||||
def countable_text(value)
|
||||
return '' if value.nil?
|
||||
|
||||
value.dup.tap do |new_text|
|
||||
new_text.gsub!(FetchLinkCardService::URL_PATTERN, 'x' * 23)
|
||||
new_text.gsub!(Account::MENTION_RE, '@\2')
|
||||
end
|
||||
end
|
||||
end
|
@@ -2,20 +2,22 @@
|
||||
|
||||
class UnreservedUsernameValidator < ActiveModel::Validator
|
||||
def validate(account)
|
||||
return if account.username.nil?
|
||||
account.errors.add(:username, I18n.t('accounts.reserved_username')) if reserved_username?(account.username)
|
||||
@username = account.username
|
||||
return if @username.nil?
|
||||
|
||||
account.errors.add(:username, I18n.t('accounts.reserved_username')) if reserved_username?
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def pam_controlled?(value)
|
||||
def pam_controlled?
|
||||
return false unless Devise.pam_authentication && Devise.pam_controlled_service
|
||||
Rpam2.account(Devise.pam_controlled_service, value).present?
|
||||
Rpam2.account(Devise.pam_controlled_service, @username).present?
|
||||
end
|
||||
|
||||
def reserved_username?(value)
|
||||
return true if pam_controlled?(value)
|
||||
def reserved_username?
|
||||
return true if pam_controlled?
|
||||
return false unless Setting.reserved_usernames
|
||||
Setting.reserved_usernames.include?(value.downcase)
|
||||
Setting.reserved_usernames.include?(@username.downcase)
|
||||
end
|
||||
end
|
||||
|
@@ -8,7 +8,7 @@ class UrlValidator < ActiveModel::EachValidator
|
||||
private
|
||||
|
||||
def compliant?(url)
|
||||
parsed_url = Addressable::URI.parse(url).normalize
|
||||
!parsed_url.nil? && %w(http https).include?(parsed_url.scheme) && parsed_url.host
|
||||
parsed_url = Addressable::URI.parse(url)
|
||||
parsed_url && %w(http https).include?(parsed_url.scheme) && parsed_url.host
|
||||
end
|
||||
end
|
||||
|
Reference in New Issue
Block a user