mirror of
https://github.com/openfoodfoundation/openfoodnetwork
synced 2026-02-05 22:26:07 +00:00
45 lines
1.2 KiB
Ruby
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
|