diff options
author | Douwe Maan <douwe@gitlab.com> | 2015-11-17 15:49:37 +0100 |
---|---|---|
committer | Douwe Maan <douwe@gitlab.com> | 2015-11-17 15:49:37 +0100 |
commit | ecb83afabcb69d80995b56323bb89b1ee1176225 (patch) | |
tree | 362fc6cca63a3ffb121bc234cf9bf00bdec9aaef /app/models/group.rb | |
parent | e849b51cae8956c9d4eebe9c42804443a55edb83 (diff) | |
download | gitlab-ce-ecb83afabcb69d80995b56323bb89b1ee1176225.tar.gz |
Refactor ability changes
Diffstat (limited to 'app/models/group.rb')
-rw-r--r-- | app/models/group.rb | 23 |
1 files changed, 21 insertions, 2 deletions
diff --git a/app/models/group.rb b/app/models/group.rb index 11fde7ba6cd..2c9e75496b9 100644 --- a/app/models/group.rb +++ b/app/models/group.rb @@ -20,8 +20,7 @@ require 'file_size_validator' class Group < Namespace include Gitlab::ConfigHelper include Referable - include HasOwners - + has_many :group_members, dependent: :destroy, as: :source, class_name: 'GroupMember' alias_method :members, :group_members has_many :users, through: :group_members @@ -66,6 +65,10 @@ class Group < Namespace end end + def owners + @owners ||= group_members.owners.includes(:user).map(&:user) + end + def add_users(user_ids, access_level, current_user = nil) user_ids.each do |user_id| Member.add_user(self.group_members, user_id, access_level, current_user) @@ -92,6 +95,22 @@ class Group < Namespace add_user(user, Gitlab::Access::MASTER, current_user) end + def add_owner(user, current_user = nil) + add_user(user, Gitlab::Access::OWNER, current_user) + end + + def has_owner?(user) + owners.include?(user) + end + + def has_master?(user) + members.masters.where(user_id: user).any? + end + + def last_owner?(user) + has_owner?(user) && owners.size == 1 + end + def avatar_type unless self.avatar.image? self.errors.add :avatar, "only images allowed" |