Commit c64c1060 authored by Kamil Trzcinski's avatar Kamil Trzcinski

Update ability model after comments

parent 6fea7c38
...@@ -5,22 +5,18 @@ class Ability ...@@ -5,22 +5,18 @@ class Ability
return [] unless user.is_a?(User) return [] unless user.is_a?(User)
return [] if user.blocked? return [] if user.blocked?
# We check with `is_a?`, because CommitStatus uses inheritance case subject
if subject.is_a?(CommitStatus) when CommitStatus then commit_status_abilities(user, subject)
return commit_status_abilities(user, subject) when Project then project_abilities(user, subject)
end when Issue then issue_abilities(user, subject)
when Note then note_abilities(user, subject)
case subject.class.name when ProjectSnippet then project_snippet_abilities(user, subject)
when "Project" then project_abilities(user, subject) when PersonalSnippet then personal_snippet_abilities(user, subject)
when "Issue" then issue_abilities(user, subject) when MergeRequest then merge_request_abilities(user, subject)
when "Note" then note_abilities(user, subject) when Group then group_abilities(user, subject)
when "ProjectSnippet" then project_snippet_abilities(user, subject) when Namespace then namespace_abilities(user, subject)
when "PersonalSnippet" then personal_snippet_abilities(user, subject) when GroupMember then group_member_abilities(user, subject)
when "MergeRequest" then merge_request_abilities(user, subject) when ProjectMember then project_member_abilities(user, subject)
when "Group" then group_abilities(user, subject)
when "Namespace" then namespace_abilities(user, subject)
when "GroupMember" then group_member_abilities(user, subject)
when "ProjectMember" then project_member_abilities(user, subject)
else [] else []
end.concat(global_abilities(user)) end.concat(global_abilities(user))
end end
...@@ -130,10 +126,8 @@ class Ability ...@@ -130,10 +126,8 @@ class Ability
if project.public? || project.internal? if project.public? || project.internal?
rules.push(*public_project_rules) rules.push(*public_project_rules)
end
# Allow to read builds for internal projects # Allow to read builds for internal projects
if project.public? || project.internal?
rules << :read_build if project.public_builds? rules << :read_build if project.public_builds?
end end
...@@ -416,11 +410,8 @@ class Ability ...@@ -416,11 +410,8 @@ class Ability
def filter_build_abilities(rules) def filter_build_abilities(rules)
# If we can't read build we should also not have that # If we can't read build we should also not have that
# ability when looking at this in context of commit_status # ability when looking at this in context of commit_status
unless rules.include?(:read_build) %w(read create update admin).each do |rule|
rules -= [:read_commit_status] rules -= [:"#{rule}_commit_status"] unless rules.include?(:"#{rule}_build")
end
unless rules.include?(:update_build)
rules -= [:update_commit_status]
end end
rules rules
end end
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment