Files
openfoodnetwork/app/controllers/user_passwords_controller.rb
2026-01-22 12:06:56 +11:00

45 lines
1.2 KiB
Ruby

# frozen_string_literal: true
class UserPasswordsController < Spree::UserPasswordsController
layout 'darkswarm'
def create
return render_unconfirmed_response if user_unconfirmed?
self.resource = resource_class.send_reset_password_instructions(raw_params[resource_name])
status = :ok
if resource.errors.empty?
message, type = [t(:password_reset_sent), :success]
else
message, type = [t(:email_not_found), :alert]
status = :not_found
end
render turbo_stream: turbo_stream.update(
'forgot-feedback',
partial: 'layouts/alert',
locals: { type:, message:, tab: 'forgot',
unconfirmed: false, email: params.dig(:spree_user, :email) }
), status:
end
private
def render_unconfirmed_response
message, type, unconfirmed, tab = [t(:email_unconfirmed), :alert, true, 'forgot']
render turbo_stream: turbo_stream.update(
'forgot-feedback',
partial: 'layouts/alert',
locals: { type:, message:, tab:,
unconfirmed:, email: params.dig(:spree_user, :email) }
), status: :unprocessable_entity
end
def user_unconfirmed?
user = Spree::User.find_by(email: params.dig(:spree_user, :email))
user && !user.confirmed?
end
end