Since the ejabberd service is now being enabled after the confirmation, we also need to move the exchanging of roster contacts to that point.
51 lines
1.3 KiB
Ruby
51 lines
1.3 KiB
Ruby
class CreateAccount < ApplicationService
|
|
def initialize(args)
|
|
@username = args[:username]
|
|
@domain = args[:ou] || "kosmos.org"
|
|
@email = args[:email]
|
|
@password = args[:password]
|
|
@invitation = args[:invitation]
|
|
@confirmed = args[:confirmed]
|
|
end
|
|
|
|
def call
|
|
user = create_user_in_database
|
|
add_ldap_document
|
|
create_lndhub_account(user)
|
|
|
|
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
|
|
|
|
# TODO move to confirmation
|
|
# (and/or add email_confirmed to entry and use in login filter)
|
|
def add_ldap_document
|
|
hashed_pw = Devise.ldap_auth_password_builder.call(@password)
|
|
CreateLdapUserJob.perform_later(@username, @domain, @email, hashed_pw)
|
|
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
|