35 lines
666 B
Ruby
35 lines
666 B
Ruby
|
# frozen_string_literal: true
|
||
|
|
||
|
module PagesDomains
|
||
|
class UpdateService < BaseService
|
||
|
def execute(domain)
|
||
|
return unless authorized?
|
||
|
|
||
|
return false unless domain.update(params)
|
||
|
|
||
|
publish_event(domain)
|
||
|
|
||
|
true
|
||
|
end
|
||
|
|
||
|
private
|
||
|
|
||
|
def authorized?
|
||
|
current_user.can?(:update_pages, project)
|
||
|
end
|
||
|
|
||
|
def publish_event(domain)
|
||
|
event = PagesDomainUpdatedEvent.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
|