Class: Gitlab::Graphql::Authorize::ObjectAuthorization

Inherits:
Object
  • Object
show all
Includes:
Allowable
Defined in:
lib/gitlab/graphql/authorize/object_authorization.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods included from Allowable

#can?, #can_all?, #can_any?

Constructor Details

#initialize(abilities, scopes = %i[api read_api])) ⇒ ObjectAuthorization

Returns a new instance of ObjectAuthorization.



11
12
13
14
# File 'lib/gitlab/graphql/authorize/object_authorization.rb', line 11

def initialize(abilities, scopes = %i[api read_api])
  @abilities = Array.wrap(abilities).flatten
  @permitted_scopes = Array.wrap(scopes)
end

Instance Attribute Details

#abilitiesObject (readonly)

Returns the value of attribute abilities.



9
10
11
# File 'lib/gitlab/graphql/authorize/object_authorization.rb', line 9

def abilities
  @abilities
end

#permitted_scopesObject (readonly)

Returns the value of attribute permitted_scopes.



9
10
11
# File 'lib/gitlab/graphql/authorize/object_authorization.rb', line 9

def permitted_scopes
  @permitted_scopes
end

Instance Method Details

#any?Boolean

Returns:

  • (Boolean)


20
21
22
# File 'lib/gitlab/graphql/authorize/object_authorization.rb', line 20

def any?
  abilities.present?
end

#none?Boolean

Returns:

  • (Boolean)


16
17
18
# File 'lib/gitlab/graphql/authorize/object_authorization.rb', line 16

def none?
  abilities.empty?
end

#ok?(object, current_user, scope_validator:, skip_abilities: nil) ⇒ Boolean

Returns:

  • (Boolean)


24
25
26
# File 'lib/gitlab/graphql/authorize/object_authorization.rb', line 24

def ok?(object, current_user, scope_validator:, skip_abilities: nil)
  scopes_ok?(scope_validator) && abilities_ok?(object, current_user, skip_abilities: skip_abilities)
end