Sha256: f9ffe4fedbec0e3f5005dc2f205378d5223072db5f1df1e2f0b61151d680ed96

Contents?: true

Size: 1.47 KB

Versions: 2

Compression:

Stored size: 1.47 KB

Contents

module Users
  module Emails
    class ResetPasswordsController < ActionController::API
      # Action to request a password reset
      def create
        user = User.find_by(email: params[:email])
        message = I18n.t("shieldify.controllers.emails.reset_passwords.create.success")

        user.send_reset_email_password_instructions if user

        render json: { message: message }, status: :ok
      end

      # Action to update the password
      def update
        user = User.find_by_reset_email_password_token(params[:token])
        
        if user
          if user.reset_password(new_password: params[:password], new_password_confirmation: params[:password_confirmation])
            set_cookie('shfy_message', I18n.t("shieldify.controllers.emails.reset_passwords.update.success"))
            set_cookie('shfy_status', 'success')
          else
            set_cookie('shfy_message', user.errors.full_messages.last)
            set_cookie('shfy_status', 'error')
          end
        else
          set_cookie('shfy_message', I18n.t("shieldify.controllers.emails.reset_passwords.update.failure"))
          set_cookie('shfy_status', 'error')
        end

        redirect_to(Shieldify::Configuration.after_reset_password_url, allow_other_host: true)
      end

      private

      # Set a cookie with a specified name and value
      def set_cookie(name, value)
        response.set_cookie(name, { value: value, expires: 1.minute.from_now, path: '/' })
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
shieldify-0.2.7.pre.alpha app/controllers/users/emails/reset_passwords_controller.rb
shieldify-0.2.6.pre.alpha app/controllers/users/emails/reset_passwords_controller.rb