From 7f9c578fcacf7ed8786b92f4f8e2a9d41c94c187 Mon Sep 17 00:00:00 2001 From: Jean-Baptiste Bellet Date: Mon, 13 Mar 2023 14:41:48 +0100 Subject: [PATCH] Create a concern for manager invitations Can be used elsewhere --- .../admin/manager_invitations_controller.rb | 19 ++----------------- .../concerns/manager_invitations.rb | 19 +++++++++++++++++++ 2 files changed, 21 insertions(+), 17 deletions(-) create mode 100644 app/controllers/concerns/manager_invitations.rb diff --git a/app/controllers/admin/manager_invitations_controller.rb b/app/controllers/admin/manager_invitations_controller.rb index 39ea737021..549cafbb2f 100644 --- a/app/controllers/admin/manager_invitations_controller.rb +++ b/app/controllers/admin/manager_invitations_controller.rb @@ -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 diff --git a/app/controllers/concerns/manager_invitations.rb b/app/controllers/concerns/manager_invitations.rb new file mode 100644 index 0000000000..55f1682d64 --- /dev/null +++ b/app/controllers/concerns/manager_invitations.rb @@ -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