34 lines
685 B
Ruby
34 lines
685 B
Ruby
# frozen_string_literal: true
|
|
|
|
module PagesDomains
|
|
class CreateService < BaseService
|
|
def execute
|
|
return unless authorized?
|
|
|
|
domain = project.pages_domains.create(params)
|
|
|
|
publish_event(domain) if domain.persisted?
|
|
|
|
domain
|
|
end
|
|
|
|
private
|
|
|
|
def authorized?
|
|
current_user.can?(:update_pages, project)
|
|
end
|
|
|
|
def publish_event(domain)
|
|
event = PagesDomainCreatedEvent.new(
|
|
data: {
|
|
project_id: project.id,
|
|
namespace_id: project.namespace_id,
|
|
root_namespace_id: project.root_namespace.id,
|
|
domain: domain.domain
|
|
}
|
|
)
|
|
|
|
Gitlab::EventStore.publish(event)
|
|
end
|
|
end
|
|
end
|