app/services/pages_core/create_user_service.rb
# frozen_string_literal: true
module PagesCore
class CreateUserService
attr_reader :attributes, :invite
def initialize(attributes, invite: nil)
@attributes = attributes
@invite = invite
end
class << self
def call(attrs, invite: nil)
new(attrs, invite:).call
end
end
def call
User.transaction do
user = User.create(attributes.merge(invite_attributes))
if user.valid?
PagesCore::PubSub.publish(:create_user, user:, invite:)
invite&.destroy
end
user
end
end
private
def invite_attributes
return {} unless invite
{ role_names: invite.role_names,
creator: invite.user,
activated: true }
end
end
end