72 lines
1.8 KiB
Ruby
72 lines
1.8 KiB
Ruby
class LoginController < ApplicationController
|
|
before_filter :authenticate_user
|
|
|
|
def logout
|
|
if @user
|
|
reset_session
|
|
end
|
|
|
|
redirect_to "/"
|
|
end
|
|
|
|
def index
|
|
@page_title = "Login"
|
|
render :action => "index"
|
|
end
|
|
|
|
def login
|
|
if (user = User.where("email = ? OR username = ?", params[:email],
|
|
params[:email]).first) && user.try(:authenticate, params[:password])
|
|
session[:u] = user.session_token
|
|
return redirect_to "/"
|
|
end
|
|
|
|
flash.now[:error] = "Invalid e-mail address and/or password."
|
|
index
|
|
end
|
|
|
|
def forgot_password
|
|
@page_title = "Reset Password"
|
|
render :action => "forgot_password"
|
|
end
|
|
|
|
def reset_password
|
|
@found_user = User.where("email = ? OR username = ?", params[:email],
|
|
params[:email]).first
|
|
|
|
if !@found_user
|
|
flash.now[:error] = "Invalid e-mail address or username."
|
|
return forgot_password
|
|
end
|
|
|
|
@found_user.initiate_password_reset_for_ip(request.remote_ip)
|
|
|
|
flash.now[:success] = "Password reset instructions have been e-mailed " <<
|
|
"to you."
|
|
return index
|
|
end
|
|
|
|
def set_new_password
|
|
if params[:token].blank? ||
|
|
!(@reset_user = User.find_by_password_reset_token(params[:token]))
|
|
flash[:error] = "Invalid reset token. It may have already been " <<
|
|
"used or you may have copied it incorrectly."
|
|
return redirect_to forgot_password_url
|
|
end
|
|
|
|
if !params[:password].blank?
|
|
@reset_user.password = params[:password]
|
|
@reset_user.password_confirmation = params[:password_confirmation]
|
|
@reset_user.password_reset_token = nil
|
|
|
|
# this will get reset upon save
|
|
@reset_user.session_token = nil
|
|
|
|
if @reset_user.save
|
|
session[:u] = @reset_user.session_token
|
|
return redirect_to "/"
|
|
end
|
|
end
|
|
end
|
|
end
|