Commit e8e9e0f771c34cf45e9c42f69de4da6b747f07e0
1 parent
0273b79b
Exists in
master
and in
4 other branches
Use own abilities for namespace class
Showing
1 changed file
with
15 additions
and
1 deletions
Show diff stats
app/models/ability.rb
| ... | ... | @@ -10,7 +10,8 @@ class Ability |
| 10 | 10 | when "ProjectSnippet" then project_snippet_abilities(user, subject) |
| 11 | 11 | when "PersonalSnippet" then personal_snippet_abilities(user, subject) |
| 12 | 12 | when "MergeRequest" then merge_request_abilities(user, subject) |
| 13 | - when "Group", "Namespace" then group_abilities(user, subject) | |
| 13 | + when "Group" then group_abilities(user, subject) | |
| 14 | + when "Namespace" then namespace_abilities(user, subject) | |
| 14 | 15 | else [] |
| 15 | 16 | end.concat(global_abilities(user)) |
| 16 | 17 | end |
| ... | ... | @@ -144,6 +145,19 @@ class Ability |
| 144 | 145 | rules.flatten |
| 145 | 146 | end |
| 146 | 147 | |
| 148 | + def namespace_abilities user, namespace | |
| 149 | + rules = [] | |
| 150 | + | |
| 151 | + # Only namespace owner and administrators can manage it | |
| 152 | + if namespace.owner == user || user.admin? | |
| 153 | + rules << [ | |
| 154 | + :manage_namespace | |
| 155 | + ] | |
| 156 | + end | |
| 157 | + | |
| 158 | + rules.flatten | |
| 159 | + end | |
| 160 | + | |
| 147 | 161 | [:issue, :note, :project_snippet, :personal_snippet, :merge_request].each do |name| |
| 148 | 162 | define_method "#{name}_abilities" do |user, subject| |
| 149 | 163 | if subject.author == user | ... | ... |