Class: Ci::Catalog::Resources::CreateService

Inherits:
Object
  • Object
show all
Includes:
Gitlab::Allowable
Defined in:
app/services/ci/catalog/resources/create_service.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods included from Gitlab::Allowable

#can?, #can_all?, #can_any?

Constructor Details

#initialize(project, user) ⇒ CreateService

Returns a new instance of CreateService.



11
12
13
14
# File 'app/services/ci/catalog/resources/create_service.rb', line 11

def initialize(project, user)
  @current_user = user
  @project = project
end

Instance Attribute Details

#current_userObject (readonly)

Returns the value of attribute current_user.



9
10
11
# File 'app/services/ci/catalog/resources/create_service.rb', line 9

def current_user
  @current_user
end

#projectObject (readonly)

Returns the value of attribute project.



9
10
11
# File 'app/services/ci/catalog/resources/create_service.rb', line 9

def project
  @project
end

Instance Method Details

#executeObject



16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
# File 'app/services/ci/catalog/resources/create_service.rb', line 16

def execute
  raise Gitlab::Access::AccessDeniedError unless can?(current_user, :add_catalog_resource, project)

  verified_namespace = Ci::Catalog::VerifiedNamespace.for_project(project)
  catalog_resource = Ci::Catalog::Resource.new(
    project: project, verification_level: verified_namespace&.verification_level || :unverified
  )

  if catalog_resource.valid?
    catalog_resource.save!
    ServiceResponse.success(payload: catalog_resource)
  else
    ServiceResponse.error(message: catalog_resource.errors.full_messages.join(', '))
  end
end