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.rb22
1 files changed, 12 insertions, 10 deletions
diff --git a/app/models/user.rb b/app/models/user.rb
index 15e56a62a68..ed3eba4cdf0 100644
--- a/app/models/user.rb
+++ b/app/models/user.rb
@@ -81,21 +81,23 @@ class User < ActiveRecord::Base
has_many :emails, dependent: :destroy
# Groups
- has_many :users_groups, dependent: :destroy
- has_many :groups, through: :users_groups
- has_many :owned_groups, -> { where users_groups: { group_access: UsersGroup::OWNER } }, through: :users_groups, source: :group
- has_many :masters_groups, -> { where users_groups: { group_access: UsersGroup::MASTER } }, through: :users_groups, source: :group
+ has_many :members, dependent: :destroy
+ has_many :project_members, source: 'ProjectMember'
+ has_many :group_members, source: 'GroupMember'
+ has_many :groups, through: :group_members
+ has_many :owned_groups, -> { where members: { access_level: Gitlab::Access::OWNER } }, through: :group_members, source: :group
+ has_many :masters_groups, -> { where members: { access_level: Gitlab::Access::MASTER } }, through: :group_members, source: :group
# Projects
has_many :groups_projects, through: :groups, source: :projects
has_many :personal_projects, through: :namespace, source: :projects
- has_many :projects, through: :users_projects
+ has_many :projects, through: :project_members
has_many :created_projects, foreign_key: :creator_id, class_name: 'Project'
has_many :users_star_projects, dependent: :destroy
has_many :starred_projects, through: :users_star_projects, source: :project
has_many :snippets, dependent: :destroy, foreign_key: :author_id, class_name: "Snippet"
- has_many :users_projects, dependent: :destroy
+ has_many :project_members, dependent: :destroy, class_name: 'ProjectMember'
has_many :issues, dependent: :destroy, foreign_key: :author_id
has_many :notes, dependent: :destroy, foreign_key: :author_id
has_many :merge_requests, dependent: :destroy, foreign_key: :author_id
@@ -140,7 +142,7 @@ class User < ActiveRecord::Base
state_machine :state, initial: :active do
after_transition any => :blocked do |user, transition|
# Remove user from all projects and
- user.users_projects.find_each do |membership|
+ user.project_members.find_each do |membership|
# skip owned resources
next if membership.project.owner == user
@@ -148,7 +150,7 @@ class User < ActiveRecord::Base
end
# Remove user from all groups
- user.users_groups.find_each do |membership|
+ user.group_members.find_each do |membership|
# skip owned resources
next if membership.group.last_owner?(user)
@@ -175,7 +177,7 @@ class User < ActiveRecord::Base
scope :in_team, ->(team){ where(id: team.member_ids) }
scope :not_in_team, ->(team){ where('users.id NOT IN (:ids)', ids: team.member_ids) }
scope :not_in_project, ->(project) { project.users.present? ? where("id not in (:ids)", ids: project.users.map(&:id) ) : all }
- scope :without_projects, -> { where('id NOT IN (SELECT DISTINCT(user_id) FROM users_projects)') }
+ scope :without_projects, -> { where('id NOT IN (SELECT DISTINCT(user_id) FROM members)') }
scope :ldap, -> { where(provider: 'ldap') }
scope :potential_team_members, ->(team) { team.members.any? ? active.not_in_team(team) : active }
@@ -295,7 +297,7 @@ class User < ActiveRecord::Base
# Team membership in authorized projects
def tm_in_authorized_projects
- UsersProject.where(project_id: authorized_projects.map(&:id), user_id: self.id)
+ ProjectMember.where(source_id: authorized_projects.map(&:id), user_id: self.id)
end
def is_admin?