diff options
| author | Dmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com> | 2013-06-21 22:44:40 +0300 |
|---|---|---|
| committer | Dmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com> | 2013-06-21 22:44:40 +0300 |
| commit | e8e9e0f771c34cf45e9c42f69de4da6b747f07e0 (patch) | |
| tree | 113b7a87ef5759a45b177e943b55bd3731187e64 /app/models | |
| parent | 0273b79b92fb38086f14f2a44e621c37c35cc748 (diff) | |
| download | gitlab-ce-e8e9e0f771c34cf45e9c42f69de4da6b747f07e0.tar.gz | |
Use own abilities for namespace class
Diffstat (limited to 'app/models')
| -rw-r--r-- | app/models/ability.rb | 16 |
1 files changed, 15 insertions, 1 deletions
diff --git a/app/models/ability.rb b/app/models/ability.rb index 7e8d14ab10d..0b77564adc6 100644 --- a/app/models/ability.rb +++ b/app/models/ability.rb @@ -10,7 +10,8 @@ class Ability when "ProjectSnippet" then project_snippet_abilities(user, subject) when "PersonalSnippet" then personal_snippet_abilities(user, subject) when "MergeRequest" then merge_request_abilities(user, subject) - when "Group", "Namespace" then group_abilities(user, subject) + when "Group" then group_abilities(user, subject) + when "Namespace" then namespace_abilities(user, subject) else [] end.concat(global_abilities(user)) end @@ -144,6 +145,19 @@ class Ability rules.flatten end + def namespace_abilities user, namespace + rules = [] + + # Only namespace owner and administrators can manage it + if namespace.owner == user || user.admin? + rules << [ + :manage_namespace + ] + end + + rules.flatten + end + [:issue, :note, :project_snippet, :personal_snippet, :merge_request].each do |name| define_method "#{name}_abilities" do |user, subject| if subject.author == user |
