diff options
author | Andrey Kumanyaev <me@zzet.org> | 2013-01-19 21:32:55 +0400 |
---|---|---|
committer | Dmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com> | 2013-01-24 22:31:24 +0200 |
commit | 7d3efec7d190948423d7e40a3f87e2d62b4ea808 (patch) | |
tree | 4a77e58dffa89f98145378661a94252f09986ae1 /app/models | |
parent | 695becc4cb017d76329efb55aae7ddb9a208895b (diff) | |
download | gitlab-ce-7d3efec7d190948423d7e40a3f87e2d62b4ea808.tar.gz |
Add ability to teams
Diffstat (limited to 'app/models')
-rw-r--r-- | app/models/ability.rb | 17 |
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 |