summaryrefslogtreecommitdiff
path: root/app/models
diff options
context:
space:
mode:
authorAndrey Kumanyaev <me@zzet.org>2013-01-19 21:32:55 +0400
committerDmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>2013-01-24 22:31:24 +0200
commit7d3efec7d190948423d7e40a3f87e2d62b4ea808 (patch)
tree4a77e58dffa89f98145378661a94252f09986ae1 /app/models
parent695becc4cb017d76329efb55aae7ddb9a208895b (diff)
downloadgitlab-ce-7d3efec7d190948423d7e40a3f87e2d62b4ea808.tar.gz
Add ability to teams
Diffstat (limited to 'app/models')
-rw-r--r--app/models/ability.rb17
1 files changed, 17 insertions, 0 deletions
diff --git a/app/models/ability.rb b/app/models/ability.rb
index 9d33501fdbc..63d720164a1 100644
--- a/app/models/ability.rb
+++ b/app/models/ability.rb
@@ -8,6 +8,7 @@ class Ability
when "Snippet" then snippet_abilities(object, subject)
when "MergeRequest" then merge_request_abilities(object, subject)
when "Group", "Namespace" then group_abilities(object, subject)
+ when "UserTeam" then user_team_abilities(object, subject)
else []
end
end
@@ -110,6 +111,22 @@ class Ability
rules.flatten
end
+ def user_team_abilities user, team
+ rules = []
+
+ # Only group owner and administrators can manage group
+ if team.owner == user || team.admin?(user) || user.admin?
+ rules << [ :manage_user_team ]
+ end
+
+ if team.owner == user || user.admin?
+ rules << [ :admin_user_team ]
+ end
+
+ rules.flatten
+ end
+
+
[:issue, :note, :snippet, :merge_request].each do |name|
define_method "#{name}_abilities" do |user, subject|
if subject.author == user