Class: DeployKey
- Inherits:
-
Key
- Object
- ActiveRecord::Base
- ApplicationRecord
- Key
- DeployKey
- Includes:
- FromUnion, Gitlab::SQL::Pattern, PolicyActor, Presentable
- Defined in:
- app/models/deploy_key.rb
Constant Summary
Constants included from Gitlab::SQL::Pattern
Gitlab::SQL::Pattern::MIN_CHARS_FOR_PARTIAL_MATCHING, Gitlab::SQL::Pattern::REGEX_QUOTED_TERM
Constants included from Expirable
Constants inherited from ApplicationRecord
Constants included from HasCheckConstraints
HasCheckConstraints::NOT_NULL_CHECK_PATTERN
Constants included from ResetOnColumnErrors
ResetOnColumnErrors::MAX_RESET_PERIOD
Class Method Summary collapse
Instance Method Summary collapse
- #almost_orphaned? ⇒ Boolean
- #audit_details ⇒ Object
- #can_push_to?(project) ⇒ Boolean
- #deploy_keys_project_for(project) ⇒ Object
- #destroyed_when_orphaned? ⇒ Boolean
- #has_access_to?(project) ⇒ Boolean
-
#impersonated? ⇒ Boolean
This is used for the internal logic of AuditEvents::BuildService.
- #orphaned? ⇒ Boolean
- #private? ⇒ Boolean
- #user ⇒ Object
Methods included from Gitlab::SQL::Pattern
Methods included from Presentable
Methods included from PolicyActor
#access_locked?, #admin?, #alert_bot?, #automation_bot?, #blocked?, #can?, #can_access_admin_area?, #can_create_group, #can_read_all_resources?, #confirmation_required_on_sign_in?, #deactivated?, #external?, #from_ci_job_token?, #internal?, #password_expired_if_applicable?, #preferred_language, #required_terms_not_accepted?, #requires_ldap_check?, #security_bot?, #support_bot?, #try_obtain_ldap_lease
Methods inherited from Key
#add_to_authorized_keys, #can_delete?, #ensure_sha256_fingerprint!, #key=, #post_create_hook, #post_destroy_hook, #projects, #public_key, #publishable_key, #readable_by?, #refresh_user_cache, regular_keys, #remove_from_authorized_keys, #shell_id, #signing?, #to_reference, #update_last_used_at
Methods included from Expirable
#expired?, #expires?, #expires_soon?
Methods included from AfterCommitQueue
#run_after_commit, #run_after_commit_or_now
Methods inherited from ApplicationRecord
===, cached_column_list, #create_or_load_association, declarative_enum, default_select_columns, id_in, id_not_in, iid_in, nullable_column?, pluck_primary_key, primary_key_in, #readable_by?, safe_ensure_unique, safe_find_or_create_by, safe_find_or_create_by!, #to_ability_name, underscore, where_exists, where_not_exists, with_fast_read_statement_timeout, without_order
Methods included from ResetOnColumnErrors
#reset_on_union_error, #reset_on_unknown_attribute_error
Methods included from Gitlab::SensitiveSerializableHash
Class Method Details
.with_write_access_for_project(project, deploy_key: nil) ⇒ Object
82 83 84 85 86 87 |
# File 'app/models/deploy_key.rb', line 82 def self.with_write_access_for_project(project, deploy_key: nil) query = in_projects(project).with_write_access query = query.where(id: deploy_key) if deploy_key query end |
Instance Method Details
#almost_orphaned? ⇒ Boolean
50 51 52 |
# File 'app/models/deploy_key.rb', line 50 def almost_orphaned? self.deploy_keys_projects.size == 1 end |
#audit_details ⇒ Object
62 63 64 |
# File 'app/models/deploy_key.rb', line 62 def audit_details title end |
#can_push_to?(project) ⇒ Boolean
70 71 72 |
# File 'app/models/deploy_key.rb', line 70 def can_push_to?(project) !!deploy_keys_project_for(project)&.can_push? end |
#deploy_keys_project_for(project) ⇒ Object
74 75 76 77 78 79 80 |
# File 'app/models/deploy_key.rb', line 74 def deploy_keys_project_for(project) if association(:deploy_keys_projects).loaded? deploy_keys_projects.find { |dkp| dkp.project_id.eql?(project&.id) } else deploy_keys_projects.find_by(project: project) end end |
#destroyed_when_orphaned? ⇒ Boolean
54 55 56 |
# File 'app/models/deploy_key.rb', line 54 def destroyed_when_orphaned? self.private? end |
#has_access_to?(project) ⇒ Boolean
66 67 68 |
# File 'app/models/deploy_key.rb', line 66 def has_access_to?(project) deploy_keys_project_for(project).present? end |
#impersonated? ⇒ Boolean
This is used for the internal logic of AuditEvents::BuildService.
90 91 92 |
# File 'app/models/deploy_key.rb', line 90 def impersonated? false end |
#orphaned? ⇒ Boolean
46 47 48 |
# File 'app/models/deploy_key.rb', line 46 def orphaned? self.deploy_keys_projects.empty? end |
#private? ⇒ Boolean
42 43 44 |
# File 'app/models/deploy_key.rb', line 42 def private? !public? end |