diff options
author | Igor Drozdov <idrozdov@gitlab.com> | 2019-03-05 15:15:22 +0000 |
---|---|---|
committer | Yorick Peterse <yorickpeterse@gmail.com> | 2019-03-05 15:15:22 +0000 |
commit | 79c421105013c3694679fefe3c1c1d4cb30446fc (patch) | |
tree | 06149e8b6e1df689226a179d401dfde9b68b206c /app/models/project_feature.rb | |
parent | 42d3117f9c3371e07e8b0aafab6f504e87251c2a (diff) | |
download | gitlab-ce-79c421105013c3694679fefe3c1c1d4cb30446fc.tar.gz |
Display the correct number of MRs a user has access to
Diffstat (limited to 'app/models/project_feature.rb')
-rw-r--r-- | app/models/project_feature.rb | 15 |
1 files changed, 11 insertions, 4 deletions
diff --git a/app/models/project_feature.rb b/app/models/project_feature.rb index f700090a493..e6787236c4e 100644 --- a/app/models/project_feature.rb +++ b/app/models/project_feature.rb @@ -76,7 +76,7 @@ class ProjectFeature < ActiveRecord::Base # This feature might not be behind a feature flag at all, so default to true return false unless ::Feature.enabled?(feature, user, default_enabled: true) - get_permission(user, access_level(feature)) + get_permission(user, feature) end def access_level(feature) @@ -134,12 +134,12 @@ class ProjectFeature < ActiveRecord::Base (FEATURES - %i(pages)).each {|f| validator.call("#{f}_access_level")} end - def get_permission(user, level) - case level + def get_permission(user, feature) + case access_level(feature) when DISABLED false when PRIVATE - user && (project.team.member?(user) || user.full_private_access?) + team_access?(user, feature) when ENABLED true when PUBLIC @@ -148,4 +148,11 @@ class ProjectFeature < ActiveRecord::Base true end end + + def team_access?(user, feature) + return unless user + return true if user.full_private_access? + + project.team.member?(user, ProjectFeature.required_minimum_access_level(feature)) + end end |