55 lines
1.3 KiB
Ruby
55 lines
1.3 KiB
Ruby
class CreateAccount < ApplicationService
|
|
def initialize(account:)
|
|
@username = account[:username]
|
|
@domain = account[:ou] || Setting.primary_domain
|
|
@email = account[:email]
|
|
@password = account[:password]
|
|
@invitation = account[:invitation]
|
|
@confirmed = account[:confirmed]
|
|
end
|
|
|
|
def call
|
|
user = create_user_in_database
|
|
add_ldap_document
|
|
create_lndhub_account(user) if Setting.lndhub_enabled
|
|
|
|
if @invitation.present?
|
|
update_invitation(user.id)
|
|
end
|
|
end
|
|
|
|
private
|
|
|
|
def create_user_in_database
|
|
User.create!(
|
|
cn: @username,
|
|
ou: @domain,
|
|
email: @email,
|
|
password: @password,
|
|
password_confirmation: @password,
|
|
confirmed_at: @confirmed ? DateTime.now : nil
|
|
)
|
|
end
|
|
|
|
def update_invitation(user_id)
|
|
@invitation.update! invited_user_id: user_id, used_at: DateTime.now
|
|
end
|
|
|
|
def add_ldap_document
|
|
hashed_pw = Devise.ldap_auth_password_builder.call(@password)
|
|
CreateLdapUserJob.perform_later(
|
|
username: @username,
|
|
domain: @domain,
|
|
email: @email,
|
|
hashed_pw: hashed_pw,
|
|
confirmed: @confirmed
|
|
)
|
|
end
|
|
|
|
def create_lndhub_account(user)
|
|
#TODO enable in development when we have a local lndhub (mock?) API
|
|
return if Rails.env.development?
|
|
CreateLndhubAccountJob.perform_later(user)
|
|
end
|
|
end
|