Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorhttp://jneen.net/ <jneen@jneen.net>2016-08-16 22:55:44 +0300
committerhttp://jneen.net/ <jneen@jneen.net>2016-08-30 21:39:22 +0300
commit3656d3b88a01a50a5eaf66a16b6ac47d3c58352c (patch)
tree4382c67269cd684322f496348756bb63410add6e /app/models/ability.rb
parent16fe6dc7b159a0e6b68a586065de1f95d6acecfa (diff)
add automatic detection of the policy class
Diffstat (limited to 'app/models/ability.rb')
-rw-r--r--app/models/ability.rb18
1 files changed, 3 insertions, 15 deletions
diff --git a/app/models/ability.rb b/app/models/ability.rb
index c89cc9b2e17..ac5e82c14d2 100644
--- a/app/models/ability.rb
+++ b/app/models/ability.rb
@@ -61,6 +61,9 @@ class Ability
private
def uncached_allowed(user, subject)
+ policy_class = BasePolicy.class_for(subject) rescue nil
+ return policy_class.abilities(user, subject) if policy_class
+
return anonymous_abilities(subject) if user.nil?
return [] unless user.is_a?(User)
return [] if user.blocked?
@@ -70,13 +73,6 @@ class Ability
def abilities_by_subject_class(user:, subject:)
case subject
- when Project then ProjectPolicy.abilities(user, subject)
- when Issue then IssuePolicy.abilities(user, subject)
- when MergeRequest then MergeRequestPolicy.abilities(user, subject)
-
- when Ci::Build then Ci::BuildPolicy.abilities(user, subject)
- when CommitStatus then CommitStatus.abilities(user, subject)
- when Note then note_abilities(user, subject)
when ProjectSnippet then project_snippet_abilities(user, subject)
when PersonalSnippet then personal_snippet_abilities(user, subject)
when Group then group_abilities(user, subject)
@@ -96,14 +92,6 @@ class Ability
anonymous_personal_snippet_abilities(subject)
elsif subject.is_a?(ProjectSnippet)
anonymous_project_snippet_abilities(subject)
- elsif subject.is_a?(CommitStatus)
- anonymous_commit_status_abilities(subject)
- elsif subject.is_a?(Project)
- ProjectPolicy.abilities(nil, subject)
- elsif subject.is_a?(Issue)
- IssuePolicy.abilities(nil, subject)
- elsif subject.is_a?(MergeRequest)
- MergeRequestPolicy.abilities(nil, subject)
elsif subject.respond_to?(:project)
ProjectPolicy.abilities(nil, subject.project)
elsif subject.is_a?(Group) || subject.respond_to?(:group)