OSDN Git Service

Use own abilities for namespace class
authorDmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>
Fri, 21 Jun 2013 19:44:40 +0000 (22:44 +0300)
committerDmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>
Fri, 21 Jun 2013 19:44:40 +0000 (22:44 +0300)
app/models/ability.rb

index 7e8d14a..0b77564 100644 (file)
@@ -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