Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- devise_for :users, :controllers => {:registrations => "registrations", sessions: "sessions", passwords: "passwords"}
- class PasswordsController < Devise::RegistrationsController
- # binding.pry
- # POST /resource/password
- def create
- if params[:email].blank?
- render_error_empty_field and return
- end
- if user = User.find_by_email(params[:email])
- user.reset_password_token = SecureRandom.uuid
- if user.save
- if PasswordMailer.reset_password(user, params[:app_base_url]).deliver_now
- user.reset_password_sent_at = Time.now
- if user.save
- render_success
- else
- render_error
- end
- else
- render_error
- end
- else
- render_error
- end
- else
- render_error
- end
- end
- def update
- #check if token match db if token match db then update password
- if user = User.where(reset_password_token: params[:reset_password_token])
- if params[:password] == params[:password_confirmation]
- if user.update(password: params[:password]).encrypted_password
- render_success
- else
- render_error
- end
- else
- render_error
- end
- else
- render_error
- end
- end
- private
- # TODO change just one big method render_error with different cases
- def render_success
- render json: { success: "You will receive an email with instructions on how to reset your password in a few minutes." }
- end
- def render_error
- render json: { error: "Ce compte n'existe pas." }
- end
- def render_error_empty_field
- render json: { error: "Merci d'entrer un email" }
- end
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement