app/controllers/guts/sessions_controller.rb in guts-1.0.8 vs app/controllers/guts/sessions_controller.rb in guts-1.1.0
- old
+ new
@@ -1,6 +1,6 @@
-require_dependency "guts/application_controller"
+require_dependency 'guts/application_controller'
module Guts
# Sessions controller
class SessionsController < ApplicationController
# Creation of a new session (login page)
@@ -11,24 +11,25 @@
# @note It will redirect to Guts::UsersController if successful and
# it will redirect back to #new if not
# @see Guts::SessionsHelper#log_in
def create
user = User.find_by(email: params[:session][:email].downcase)
+
if user && user.authenticate(params[:session][:password])
log_in user
redirect_to users_path
else
- flash.now[:notice] = "Invalid login credentials"
+ flash.now[:notice] = 'Invalid login credentials'
render :new
end
end
# Destroys a user session
# @see Guts::SessionsHelper#log_out
def destroy
log_out
- flash[:notice] = "You have been logged out"
+ flash[:notice] = 'You have been logged out'
redirect_to new_session_path
end
# Forgot password page
def forgot
@@ -36,29 +37,26 @@
# Sends the user a new token by email to reset their password
def forgot_token
user = User.find_by(email: params[:session][:email].downcase)
if user
- user.password_token = Digest::SHA1.hexdigest("#{Time.now.to_s}#{rand(100)}")[0,8]
- user.save
+ password = Digest::SHA1.hexdigest("#{Time.current}#{rand(100)}")[0, 8]
+ user.update_attribute(:password_token, password)
UserMailer.password_reset(user).deliver_now
- flash[:notice] = "Your reset link has been sent to your inbox."
+ flash[:notice] = 'Your reset link has been sent to your inbox.'
redirect_to new_session_path
else
- flash.now[:notice] = "Invalid email address"
+ flash.now[:notice] = 'Invalid email address'
render :forgot
end
end
# Resets the user's password
def reset_password
- new_password = Digest::SHA1.hexdigest("#{Time.now.to_s}#{rand(100)}")[0,8]
-
- user = User.find_by(password_token: params[:token])
- user.password_token = nil
- user.password = new_password
- user.save
+ new_password = Digest::SHA1.hexdigest("#{Time.current}#{rand(100)}")[0, 8]
+ user = User.find_by(password_token: params[:token])
+ user.update(password_token: nil, password: new_password)
flash[:notice] = "Your new password is now: #{new_password}. You may now login with it."
redirect_to new_session_path
end
end