diff options
Diffstat (limited to 'app/models/concerns/has_user_type.rb')
-rw-r--r-- | app/models/concerns/has_user_type.rb | 29 |
1 files changed, 19 insertions, 10 deletions
diff --git a/app/models/concerns/has_user_type.rb b/app/models/concerns/has_user_type.rb index b02c95c9662..468ea26c51a 100644 --- a/app/models/concerns/has_user_type.rb +++ b/app/models/concerns/has_user_type.rb @@ -4,7 +4,8 @@ module HasUserType extend ActiveSupport::Concern USER_TYPES = { - human: nil, + human_deprecated: nil, + human: 0, support_bot: 1, alert_bot: 2, visual_review_bot: 3, @@ -14,8 +15,11 @@ module HasUserType migration_bot: 7, security_bot: 8, automation_bot: 9, + security_policy_bot: 10, # Currently not in use. See https://gitlab.com/gitlab-org/gitlab/-/issues/384174 admin_bot: 11, - suggested_reviewers_bot: 12 + suggested_reviewers_bot: 12, + service_account: 13, + llm_bot: 14 }.with_indifferent_access.freeze BOT_USER_TYPES = %w[ @@ -26,15 +30,24 @@ module HasUserType migration_bot security_bot automation_bot + security_policy_bot admin_bot suggested_reviewers_bot + service_account + llm_bot ].freeze - NON_INTERNAL_USER_TYPES = %w[human project_bot service_user].freeze + # `service_account` allows instance/namespaces to configure a user for external integrations/automations + # `service_user` is an internal, `gitlab-com`-specific user type for integrations like suggested reviewers + NON_INTERNAL_USER_TYPES = %w[human human_deprecated project_bot service_user service_account].freeze INTERNAL_USER_TYPES = (USER_TYPES.keys - NON_INTERNAL_USER_TYPES).freeze included do - scope :humans, -> { where(user_type: :human) } + enum user_type: USER_TYPES + + scope :humans, -> { where(user_type: :human).or(where(user_type: :human_deprecated)) } + # Override default scope to include temporary human type. See https://gitlab.com/gitlab-org/gitlab/-/issues/386474 + scope :human, -> { humans } scope :bots, -> { where(user_type: BOT_USER_TYPES) } scope :without_bots, -> { humans.or(where(user_type: USER_TYPES.keys - BOT_USER_TYPES)) } scope :non_internal, -> { humans.or(where(user_type: NON_INTERNAL_USER_TYPES)) } @@ -42,10 +55,8 @@ module HasUserType scope :without_project_bot, -> { humans.or(where(user_type: USER_TYPES.keys - ['project_bot'])) } scope :human_or_service_user, -> { humans.or(where(user_type: :service_user)) } - enum user_type: USER_TYPES - def human? - super || user_type.nil? + super || human_deprecated? || user_type.nil? end end @@ -53,10 +64,8 @@ module HasUserType BOT_USER_TYPES.include?(user_type) end - # The explicit check for project_bot will be removed with Bot Categorization - # Ref: https://gitlab.com/gitlab-org/gitlab/-/issues/213945 def internal? - ghost? || (bot? && !project_bot?) + INTERNAL_USER_TYPES.include?(user_type) end def redacted_name(viewing_user) |