summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--app/models/user.rb10
-rw-r--r--app/views/groups/people.html.haml7
2 files changed, 12 insertions, 5 deletions
diff --git a/app/models/user.rb b/app/models/user.rb
index 6de8d2d4c39..904d2919429 100644
--- a/app/models/user.rb
+++ b/app/models/user.rb
@@ -71,7 +71,9 @@ class User < ActiveRecord::Base
has_many :keys, dependent: :destroy
# Groups
- has_many :groups, class_name: "Group", foreign_key: :owner_id
+ has_many :own_groups, class_name: "Group", foreign_key: :owner_id
+ has_many :users_groups, dependent: :destroy
+ has_many :groups, through: :users_groups
# Teams
has_many :own_teams, dependent: :destroy, class_name: "UserTeam", foreign_key: :owner_id
@@ -230,7 +232,7 @@ class User < ActiveRecord::Base
# Groups where user is an owner
def owned_groups
- groups
+ own_groups
end
def owned_teams
@@ -239,14 +241,14 @@ class User < ActiveRecord::Base
# Groups user has access to
def authorized_groups
- @group_ids ||= (groups.pluck(:id) + authorized_projects.pluck(:namespace_id))
+ @group_ids ||= (groups.pluck(:id) + own_groups.pluck(:id) + authorized_projects.pluck(:namespace_id))
Group.where(id: @group_ids)
end
# Projects user has access to
def authorized_projects
- @project_ids ||= (owned_projects.pluck(:id) + projects.pluck(:id)).uniq
+ @project_ids ||= (owned_projects.pluck(:id) + groups.map(&:projects).flatten.map(&:id) + projects.pluck(:id)).uniq
Project.where(id: @project_ids)
end
diff --git a/app/views/groups/people.html.haml b/app/views/groups/people.html.haml
index 4c082537a43..5b595ad3584 100644
--- a/app/views/groups/people.html.haml
+++ b/app/views/groups/people.html.haml
@@ -1,7 +1,12 @@
- can_manage_group = current_user.can? :manage_group, @group
.row
.span6
- = render "new_group_member"
+ - if can_manage_group
+ = render "new_group_member"
+ - else
+ .light-well
+ %h4.nothing_here_message
+ Only group owners can manage group members
.span6
.ui-box
%h5.title