Skip to content

Commit 00e4a47

Browse files
committed
allow/deny user to create group/team
1 parent 585a53c commit 00e4a47

File tree

4 files changed

+32
-10
lines changed

4 files changed

+32
-10
lines changed

app/controllers/groups_controller.rb

+5
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ class GroupsController < ApplicationController
66

77
# Authorize
88
before_filter :authorize_read_group!, except: [:new, :create]
9+
before_filter :authorize_create_group!, only: [:new, :create]
910

1011
# Load group projects
1112
before_filter :projects, except: [:new, :create]
@@ -103,4 +104,8 @@ def authorize_read_group!
103104
return render_404
104105
end
105106
end
107+
108+
def authorize_create_group!
109+
can?(current_user, :create_group, nil)
110+
end
106111
end

app/models/ability.rb

+18-9
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,25 @@
11
class Ability
22
class << self
3-
def allowed(object, subject)
3+
def allowed(user, subject)
4+
return [] unless user.kind_of?(User)
5+
46
case subject.class.name
5-
when "Project" then project_abilities(object, subject)
6-
when "Issue" then issue_abilities(object, subject)
7-
when "Note" then note_abilities(object, subject)
8-
when "Snippet" then snippet_abilities(object, subject)
9-
when "MergeRequest" then merge_request_abilities(object, subject)
10-
when "Group", "Namespace" then group_abilities(object, subject)
11-
when "UserTeam" then user_team_abilities(object, subject)
7+
when "Project" then project_abilities(user, subject)
8+
when "Issue" then issue_abilities(user, subject)
9+
when "Note" then note_abilities(user, subject)
10+
when "Snippet" then snippet_abilities(user, subject)
11+
when "MergeRequest" then merge_request_abilities(user, subject)
12+
when "Group", "Namespace" then group_abilities(user, subject)
13+
when "UserTeam" then user_team_abilities(user, subject)
1214
else []
13-
end
15+
end.concat(global_abilities(user))
16+
end
17+
18+
def global_abilities(user)
19+
rules = []
20+
rules << :create_group if user.can_create_group
21+
rules << :create_team if user.can_create_team
22+
rules
1423
end
1524

1625
def project_abilities(user, project)

app/models/user.rb

+1-1
Original file line numberDiff line numberDiff line change
@@ -232,7 +232,7 @@ def can_create_project?
232232
end
233233

234234
def can_create_group?
235-
can_create_project?
235+
can?(:create_group, nil)
236236
end
237237

238238
def abilities

app/views/admin/users/_form.html.haml

+8
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,14 @@
4646
= f.label :projects_limit
4747
.input= f.number_field :projects_limit
4848

49+
.clearfix
50+
= f.label :can_create_group
51+
.input= f.check_box :can_create_group
52+
53+
.clearfix
54+
= f.label :can_create_team
55+
.input= f.check_box :can_create_team
56+
4957
.clearfix
5058
= f.label :admin do
5159
%strong.cred Administrator

0 commit comments

Comments
 (0)