diff options
| author | Dmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com> | 2013-06-17 19:59:41 +0300 |
|---|---|---|
| committer | Dmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com> | 2013-06-18 17:47:52 +0300 |
| commit | 7d57b96ee0f668acf10067b06a614b3052e27f89 (patch) | |
| tree | 72ac54be4c040340c6ff03fbc1874b9f293abf68 /app/models | |
| parent | 5bed576ac2c6ea9aa4eac634c605473a12e96b3a (diff) | |
| download | gitlab-ce-7d57b96ee0f668acf10067b06a614b3052e27f89.tar.gz | |
Update authorized/owned resources with new group permissions
Diffstat (limited to 'app/models')
| -rw-r--r-- | app/models/user.rb | 10 |
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 |
