Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGitLab Bot <gitlab-bot@gitlab.com>2020-08-20 21:42:06 +0300
committerGitLab Bot <gitlab-bot@gitlab.com>2020-08-20 21:42:06 +0300
commit6e4e1050d9dba2b7b2523fdd1768823ab85feef4 (patch)
tree78be5963ec075d80116a932011d695dd33910b4e /app/models/group_deploy_key.rb
parent1ce776de4ae122aba3f349c02c17cebeaa8ecf07 (diff)
Add latest changes from gitlab-org/gitlab@13-3-stable-ee
Diffstat (limited to 'app/models/group_deploy_key.rb')
-rw-r--r--app/models/group_deploy_key.rb22
1 files changed, 22 insertions, 0 deletions
diff --git a/app/models/group_deploy_key.rb b/app/models/group_deploy_key.rb
index d1f1aa544cd..160ac28b33b 100644
--- a/app/models/group_deploy_key.rb
+++ b/app/models/group_deploy_key.rb
@@ -3,9 +3,31 @@
class GroupDeployKey < Key
self.table_name = 'group_deploy_keys'
+ has_many :group_deploy_keys_groups, inverse_of: :group_deploy_key, dependent: :destroy # rubocop:disable Cop/ActiveRecordDependent
+ has_many :groups, through: :group_deploy_keys_groups
+
validates :user, presence: true
def type
'DeployKey'
end
+
+ def group_deploy_keys_group_for(group)
+ group_deploy_keys_groups.find_by(group: group)
+ end
+
+ def can_be_edited_for?(user, group)
+ Ability.allowed?(user, :update_group_deploy_key, self) ||
+ Ability.allowed?(
+ user,
+ :update_group_deploy_key_for_group,
+ group_deploy_keys_group_for(group)
+ )
+ end
+
+ def group_deploy_keys_groups_for_user(user)
+ group_deploy_keys_groups.select do |group_deploy_keys_group|
+ Ability.allowed?(user, :read_group, group_deploy_keys_group.group)
+ end
+ end
end