debian-mirror-gitlab/app/validators/gitlab/emoji_name_validator.rb

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

33 lines
843 B
Ruby
Raw Normal View History

2021-12-11 22:18:48 +05:30
# frozen_string_literal: true
# Gitlab::EmojiNameValidator
#
# Validates that the provided value matches an indexed emoji alpha code
#
# @example Usage
# class AwardEmoji < ApplicationRecord
# validate :name, 'gitlab/emoji_name': true
# end
module Gitlab
class EmojiNameValidator < ActiveModel::EachValidator
def validate_each(record, attribute, value)
2022-06-21 17:19:12 +05:30
return if valid_tanuki_emoji?(value)
return if valid_custom_emoji?(record, value)
record.errors.add(attribute, (options[:message] || 'is not a valid emoji name'))
end
private
def valid_tanuki_emoji?(value)
TanukiEmoji.find_by_alpha_code(value.to_s)
end
def valid_custom_emoji?(record, value)
resource = record.try(:resource_parent)
CustomEmoji.for_resource(resource).by_name(value.to_s).any?
2021-12-11 22:18:48 +05:30
end
end
end