mirror of
https://github.com/yingziwu/mastodon.git
synced 2026-02-19 08:43:16 +00:00
upgrade to v2.9.0rc1
This commit is contained in:
commit
6fef22365d
495 changed files with 10757 additions and 5102 deletions
|
|
@ -2,7 +2,10 @@
|
|||
|
||||
class BlacklistedEmailValidator < ActiveModel::Validator
|
||||
def validate(user)
|
||||
return if user.valid_invitation?
|
||||
|
||||
@email = user.email
|
||||
|
||||
user.errors.add(:email, I18n.t('users.invalid_email')) if blocked_email?
|
||||
end
|
||||
|
||||
|
|
@ -13,7 +16,7 @@ class BlacklistedEmailValidator < ActiveModel::Validator
|
|||
end
|
||||
|
||||
def on_blacklist?
|
||||
return true if EmailDomainBlock.block?(@email)
|
||||
return true if EmailDomainBlock.block?(@email)
|
||||
return false if Rails.configuration.x.email_domains_blacklist.blank?
|
||||
|
||||
domains = Rails.configuration.x.email_domains_blacklist.gsub('.', '\.')
|
||||
|
|
|
|||
|
|
@ -5,16 +5,10 @@ class ExistingUsernameValidator < ActiveModel::EachValidator
|
|||
return if value.blank?
|
||||
|
||||
if options[:multiple]
|
||||
missing_usernames = value.split(',').map { |username| username unless Account.find_local(username) }.compact
|
||||
missing_usernames = value.split(',').map { |username| username.strip.gsub(/\A@/, '') }.map { |username| username unless Account.find_local(username) }.compact
|
||||
record.errors.add(attribute, I18n.t('existing_username_validator.not_found_multiple', usernames: missing_usernames.join(', '))) if missing_usernames.any?
|
||||
else
|
||||
record.errors.add(attribute, I18n.t('existing_username_validator.not_found')) unless Account.find_local(value)
|
||||
record.errors.add(attribute, I18n.t('existing_username_validator.not_found')) unless Account.find_local(value.strip.gsub(/\A@/, ''))
|
||||
end
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def valid_html?(str)
|
||||
Nokogiri::HTML.fragment(str).to_s == str
|
||||
end
|
||||
end
|
||||
|
|
|
|||
|
|
@ -1,18 +1,20 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
class HtmlValidator < ActiveModel::EachValidator
|
||||
ERROR_RE = /Opening and ending tag mismatch|Unexpected end tag/
|
||||
|
||||
def validate_each(record, attribute, value)
|
||||
return if value.blank?
|
||||
|
||||
errors = html_errors(value)
|
||||
unless errors.empty?
|
||||
record.errors.add(attribute, I18n.t('html_validator.invalid_markup', error: errors.first.to_s))
|
||||
end
|
||||
|
||||
record.errors.add(attribute, I18n.t('html_validator.invalid_markup', error: errors.first.to_s)) unless errors.empty?
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def html_errors(str)
|
||||
fragment = Nokogiri::HTML.fragment(str)
|
||||
fragment.errors
|
||||
fragment = Nokogiri::HTML.fragment(options[:wrap_with] ? "<#{options[:wrap_with]}>#{str}</#{options[:wrap_with]}>" : str)
|
||||
fragment.errors.select { |error| ERROR_RE =~ error.message }
|
||||
end
|
||||
end
|
||||
|
|
|
|||
|
|
@ -14,6 +14,6 @@ class PollValidator < ActiveModel::Validator
|
|||
poll.errors.add(:options, I18n.t('polls.errors.over_character_limit', max: MAX_OPTION_CHARS)) if poll.options.any? { |option| option.mb_chars.grapheme_length > MAX_OPTION_CHARS }
|
||||
poll.errors.add(:options, I18n.t('polls.errors.duplicate_options')) unless poll.options.uniq.size == poll.options.size
|
||||
poll.errors.add(:expires_at, I18n.t('polls.errors.duration_too_long')) if poll.expires_at.nil? || poll.expires_at - current_time > MAX_EXPIRATION
|
||||
poll.errors.add(:expires_at, I18n.t('polls.errors.duration_too_short')) if poll.expires_at.present? && poll.expires_at - current_time < MIN_EXPIRATION
|
||||
poll.errors.add(:expires_at, I18n.t('polls.errors.duration_too_short')) if poll.expires_at.present? && (poll.expires_at - current_time).ceil < MIN_EXPIRATION
|
||||
end
|
||||
end
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue