Module: HasUserType
- Extended by:
- ActiveSupport::Concern
- Included in:
- User
- Defined in:
- app/models/concerns/has_user_type.rb
Constant Summary collapse
- USER_TYPES =
{ human: 0, support_bot: 1, alert_bot: 2, visual_review_bot: 3, service_user: 4, ghost: 5, project_bot: 6, migration_bot: 7, security_bot: 8, automation_bot: 9, security_policy_bot: 10, admin_bot: 11, suggested_reviewers_bot: 12, service_account: 13, llm_bot: 14 }.with_indifferent_access.freeze
- BOT_USER_TYPES =
%w[ alert_bot project_bot support_bot visual_review_bot migration_bot security_bot automation_bot security_policy_bot admin_bot suggested_reviewers_bot service_account llm_bot ].freeze
- NON_INTERNAL_USER_TYPES =
‘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
%w[human project_bot service_user service_account].freeze
- INTERNAL_USER_TYPES =
(USER_TYPES.keys - NON_INTERNAL_USER_TYPES).freeze
Instance Method Summary collapse
- #bot? ⇒ Boolean
- #internal? ⇒ Boolean
- #redacted_name(viewing_user) ⇒ Object
- #resource_bot_owners ⇒ Object
- #resource_bot_resource ⇒ Object
Instance Method Details
#bot? ⇒ Boolean
57 58 59 |
# File 'app/models/concerns/has_user_type.rb', line 57 def bot? BOT_USER_TYPES.include?(user_type) end |
#internal? ⇒ Boolean
61 62 63 |
# File 'app/models/concerns/has_user_type.rb', line 61 def internal? INTERNAL_USER_TYPES.include?(user_type) end |
#redacted_name(viewing_user) ⇒ Object
65 66 67 68 69 70 71 72 73 74 75 76 |
# File 'app/models/concerns/has_user_type.rb', line 65 def redacted_name(viewing_user) return self.name unless self.project_bot? return self.name if self.groups.any? && viewing_user&.can?(:read_group, self.groups.first) return self.name if viewing_user&.can?(:read_project, self.projects.first) # If the requester does not have permission to read the project bot name, # the API returns an arbitrary string. UI changes will be addressed in a follow up issue: # https://gitlab.com/gitlab-org/gitlab/-/issues/346058 '****' end |
#resource_bot_owners ⇒ Object
84 85 86 87 88 89 90 91 92 93 |
# File 'app/models/concerns/has_user_type.rb', line 84 def resource_bot_owners return [] unless project_bot? resource = resource_bot_resource return [] unless resource return resource.maintainers if resource.is_a?(Project) resource.owners end |
#resource_bot_resource ⇒ Object
78 79 80 81 82 |
# File 'app/models/concerns/has_user_type.rb', line 78 def resource_bot_resource return unless project_bot? projects&.first || groups&.first end |