summaryrefslogtreecommitdiff
path: root/app/models
diff options
context:
space:
mode:
authorDmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>2013-06-21 22:44:40 +0300
committerDmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>2013-06-21 22:44:40 +0300
commite8e9e0f771c34cf45e9c42f69de4da6b747f07e0 (patch)
tree113b7a87ef5759a45b177e943b55bd3731187e64 /app/models
parent0273b79b92fb38086f14f2a44e621c37c35cc748 (diff)
downloadgitlab-ce-e8e9e0f771c34cf45e9c42f69de4da6b747f07e0.tar.gz
Use own abilities for namespace class
Diffstat (limited to 'app/models')
-rw-r--r--app/models/ability.rb16
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