summaryrefslogtreecommitdiff
path: root/app/models/concerns
diff options
context:
space:
mode:
authorJames Edwards-Jones <jedwardsjones@gitlab.com>2017-11-24 12:41:36 +0000
committerJames Edwards-Jones <jedwardsjones@gitlab.com>2017-11-24 13:20:56 +0000
commitd6dd9d712ac24a095d0b0506731f9415b7c3b5f5 (patch)
treedd8cb75a449d3632902d94933ab36210f5d6abf8 /app/models/concerns
parente548c613346a09ba2fc8dfd6ed64da6628ec6a45 (diff)
downloadgitlab-ce-d6dd9d712ac24a095d0b0506731f9415b7c3b5f5.tar.gz
Fix ProtectedBranch access level validations
Before an access_level was required in EE even when an it had been set for a user/group.
Diffstat (limited to 'app/models/concerns')
-rw-r--r--app/models/concerns/protected_branch_access.rb10
-rw-r--r--app/models/concerns/protected_ref_access.rb16
2 files changed, 16 insertions, 10 deletions
diff --git a/app/models/concerns/protected_branch_access.rb b/app/models/concerns/protected_branch_access.rb
index fde1cc44afa..77307e92f22 100644
--- a/app/models/concerns/protected_branch_access.rb
+++ b/app/models/concerns/protected_branch_access.rb
@@ -1,12 +1,6 @@
module ProtectedBranchAccess
extend ActiveSupport::Concern
- ALLOWED_ACCESS_LEVELS ||= [
- Gitlab::Access::MASTER,
- Gitlab::Access::DEVELOPER,
- Gitlab::Access::NO_ACCESS
- ].freeze
-
included do
include ProtectedRefAccess
@@ -14,10 +8,6 @@ module ProtectedBranchAccess
delegate :project, to: :protected_branch
- validates :access_level, presence: true, inclusion: {
- in: ALLOWED_ACCESS_LEVELS
- }
-
def self.human_access_levels
{
Gitlab::Access::MASTER => "Masters",
diff --git a/app/models/concerns/protected_ref_access.rb b/app/models/concerns/protected_ref_access.rb
index c4f158e569a..665c41c825e 100644
--- a/app/models/concerns/protected_ref_access.rb
+++ b/app/models/concerns/protected_ref_access.rb
@@ -1,15 +1,31 @@
module ProtectedRefAccess
extend ActiveSupport::Concern
+ ALLOWED_ACCESS_LEVELS = [
+ Gitlab::Access::MASTER,
+ Gitlab::Access::DEVELOPER,
+ Gitlab::Access::NO_ACCESS
+ ].freeze
+
included do
scope :master, -> { where(access_level: Gitlab::Access::MASTER) }
scope :developer, -> { where(access_level: Gitlab::Access::DEVELOPER) }
+
+ validates :access_level, presence: true, if: :role?, inclusion: {
+ in: ALLOWED_ACCESS_LEVELS
+ }
end
def humanize
self.class.human_access_levels[self.access_level]
end
+ # CE access levels are always role-based,
+ # where as EE allows groups and users too
+ def role?
+ true
+ end
+
def check_access(user)
return true if user.admin?