summaryrefslogtreecommitdiff
path: root/app/models/concerns/protected_branch_access.rb
diff options
context:
space:
mode:
Diffstat (limited to 'app/models/concerns/protected_branch_access.rb')
-rw-r--r--app/models/concerns/protected_branch_access.rb30
1 files changed, 21 insertions, 9 deletions
diff --git a/app/models/concerns/protected_branch_access.rb b/app/models/concerns/protected_branch_access.rb
index 9dd4d9c6f24..a40148a4394 100644
--- a/app/models/concerns/protected_branch_access.rb
+++ b/app/models/concerns/protected_branch_access.rb
@@ -2,20 +2,32 @@ module ProtectedBranchAccess
extend ActiveSupport::Concern
included do
+ include ProtectedRefAccess
+
belongs_to :protected_branch
+
delegate :project, to: :protected_branch
- scope :master, -> { where(access_level: Gitlab::Access::MASTER) }
- scope :developer, -> { where(access_level: Gitlab::Access::DEVELOPER) }
- end
+ validates :access_level, presence: true, inclusion: {
+ in: [
+ Gitlab::Access::MASTER,
+ Gitlab::Access::DEVELOPER,
+ Gitlab::Access::NO_ACCESS
+ ]
+ }
- def humanize
- self.class.human_access_levels[self.access_level]
- end
+ def self.human_access_levels
+ {
+ Gitlab::Access::MASTER => "Masters",
+ Gitlab::Access::DEVELOPER => "Developers + Masters",
+ Gitlab::Access::NO_ACCESS => "No one"
+ }.with_indifferent_access
+ end
- def check_access(user)
- return true if user.is_admin?
+ def check_access(user)
+ return false if access_level == Gitlab::Access::NO_ACCESS
- project.team.max_member_access(user.id) >= access_level
+ super
+ end
end
end