mirror of
https://github.com/openfoodfoundation/openfoodnetwork
synced 2026-01-24 20:36:49 +00:00
60 lines
1.5 KiB
Ruby
60 lines
1.5 KiB
Ruby
# frozen_string_literal: true
|
|
|
|
require "spree/core/controller_helpers/auth"
|
|
require "spree/core/controller_helpers/common"
|
|
require "spree/core/controller_helpers/order"
|
|
|
|
class UserRegistrationsController < Devise::RegistrationsController
|
|
I18N_SCOPE = 'devise.user_registrations.spree_user'
|
|
|
|
helper 'spree/base'
|
|
|
|
include Spree::Core::ControllerHelpers::Auth
|
|
include Spree::Core::ControllerHelpers::Common
|
|
include Spree::Core::ControllerHelpers::Order
|
|
include I18nHelper
|
|
|
|
skip_before_action :require_no_authentication
|
|
|
|
before_action :set_checkout_redirect, only: :create
|
|
before_action :set_locale
|
|
|
|
# POST /resource/sign_up
|
|
def create
|
|
@user = build_resource(spree_user_params)
|
|
@user.locale = I18n.locale.to_s
|
|
unless resource.save
|
|
return render_error(@user.errors)
|
|
end
|
|
|
|
session[:confirmation_return_url] = params[:return_url]
|
|
associate_user
|
|
|
|
respond_to do |format|
|
|
format.js do
|
|
render json: { email: @user.email }
|
|
end
|
|
end
|
|
rescue StandardError => e
|
|
Alert.raise(e)
|
|
render_error(message: I18n.t('unknown_error', scope: I18N_SCOPE))
|
|
end
|
|
|
|
private
|
|
|
|
def spree_user_params
|
|
return params[:spree_user] if params[:spree_user].blank?
|
|
|
|
PermittedAttributes::User.new(params, :spree_user).call([:remember_me])
|
|
end
|
|
|
|
def render_error(errors = {})
|
|
clean_up_passwords(resource)
|
|
respond_to do |format|
|
|
format.js do
|
|
render json: errors, status: :unauthorized
|
|
end
|
|
end
|
|
end
|
|
end
|