summaryrefslogtreecommitdiff
path: root/app/models/user.rb
diff options
context:
space:
mode:
Diffstat (limited to 'app/models/user.rb')
-rw-r--r--app/models/user.rb10
1 files changed, 6 insertions, 4 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