Utilize already existing method 'find_by_username_or_email'

check presence of email using include, dont use =~
This commit is contained in:
Manoj
2013-10-24 13:29:58 +05:30
parent 89f801ac04
commit 96ae3cdacc
3 changed files with 21 additions and 18 deletions

View File

@ -10,14 +10,11 @@ class SessionController < ApplicationController
params.require(:login)
params.require(:password)
login = params[:login].strip
login = login[1..-1] if login[0] == "@"
login = params[:login].strip
password = params[:password]
login = login[1..-1] if login[0] == "@"
if login =~ /@/
@user = User.where(email: Email.downcase(login)).first
else
@user = User.where(username_lower: login.downcase).first
end
@user = User.find_by_username_or_email(login)
if @user.present?
@ -28,7 +25,7 @@ class SessionController < ApplicationController
end
# If their password is correct
if @user.confirm_password?(params[:password])
if @user.confirm_password?(password)
if @user.is_banned?
render json: { error: I18n.t("login.banned", {date: I18n.l(@user.banned_till, format: :date_only)}) }
@ -57,7 +54,7 @@ class SessionController < ApplicationController
def forgot_password
params.require(:login)
user = User.where('username_lower = :username or email = :email', username: params[:login].downcase, email: Email.downcase(params[:login])).first
user = User.find_by_username_or_email(params[:login])
if user.present?
email_token = user.email_tokens.create(email: user.email)
Jobs.enqueue(:user_email, type: :forgot_password, user_id: user.id, email_token: email_token.token)