Create a concern for manager invitations

Can be used elsewhere
This commit is contained in:
Jean-Baptiste Bellet
2023-03-13 14:41:48 +01:00
parent 782c9150a2
commit 7f9c578fca
2 changed files with 21 additions and 17 deletions

View File

@@ -3,6 +3,7 @@
module Admin
class ManagerInvitationsController < Spree::Admin::BaseController
authorize_resource class: false
include ManagerInvitations
def create
@email = params[:email]
@@ -18,7 +19,7 @@ module Admin
return
end
new_user = create_new_manager
new_user = create_new_manager(@email, @enterprise)
if new_user
render json: { user: new_user.id }, status: :ok
@@ -27,21 +28,5 @@ module Admin
status: :internal_server_error
end
end
private
def create_new_manager
password = Devise.friendly_token
new_user = Spree::User.create(email: @email, unconfirmed_email: @email, password: password)
new_user.reset_password_token = Devise.friendly_token
# Same time as used in Devise's lib/devise/models/recoverable.rb.
new_user.reset_password_sent_at = Time.now.utc
new_user.save!
@enterprise.users << new_user
EnterpriseMailer.manager_invitation(@enterprise, new_user).deliver_later
new_user
end
end
end

View File

@@ -0,0 +1,19 @@
# frozen_string_literal: true
module ManagerInvitations
extend ActiveSupport::Concern
def create_new_manager(email, enterprise)
password = Devise.friendly_token
new_user = Spree::User.create(email: email, unconfirmed_email: email, password: password)
new_user.reset_password_token = Devise.friendly_token
# Same time as used in Devise's lib/devise/models/recoverable.rb.
new_user.reset_password_sent_at = Time.now.utc
new_user.save!
enterprise.users << new_user
EnterpriseMailer.manager_invitation(@enterprise, new_user).deliver_later
new_user
end
end