class PasswordsController < ApplicationController include SessionMethods layout "site" before_action :authorize_web before_action :set_locale before_action :check_database_readable authorize_resource :class => false before_action :check_database_writable, :only => [:lost_password, :reset_password] def lost_password @title = t "passwords.lost_password.title" if request.post? user = User.visible.find_by(:email => params[:email]) if user.nil? users = User.visible.where("LOWER(email) = LOWER(?)", params[:email]) user = users.first if users.count == 1 end if user token = user.tokens.create UserMailer.lost_password(user, token).deliver_later flash[:notice] = t "passwords.lost_password.notice email on way" redirect_to login_path else flash.now[:error] = t "passwords.lost_password.notice email cannot find" end end end def reset_password @title = t "passwords.reset_password.title" if params[:token] token = UserToken.find_by(:token => params[:token]) if token self.current_user = token.user if params[:user] current_user.pass_crypt = params[:user][:pass_crypt] current_user.pass_crypt_confirmation = params[:user][:pass_crypt_confirmation] current_user.status = "active" if current_user.status == "pending" current_user.email_valid = true if current_user.save token.destroy session[:fingerprint] = current_user.fingerprint flash[:notice] = t "passwords.reset_password.flash changed" successful_login(current_user) end end else flash[:error] = t "passwords.reset_password.flash token bad" redirect_to :action => "lost_password" end else head :bad_request end end end