From 9e424027534be31696b5e065e57f65885445cafa Mon Sep 17 00:00:00 2001 From: DavisLWebb Date: Sun, 2 Mar 2014 18:12:25 -0500 Subject: THIS SHOULD COMMIT THE SESSION FILES --- app/controllers/sessions_controller.rb | 25 +++++++++ app/helpers/sessions_helper.rb | 65 ++++++++++++++++++++++ .../20140302210209_add_remember_token_to_users.rb | 8 +++ 3 files changed, 98 insertions(+) create mode 100644 app/controllers/sessions_controller.rb create mode 100644 app/helpers/sessions_helper.rb create mode 100644 db/migrate/20140302210209_add_remember_token_to_users.rb diff --git a/app/controllers/sessions_controller.rb b/app/controllers/sessions_controller.rb new file mode 100644 index 0000000..8a9de56 --- /dev/null +++ b/app/controllers/sessions_controller.rb @@ -0,0 +1,25 @@ +class SessionsController < ApplicationController + + def new + end + + def create + user = User.find_by(email: params[:session][:email].downcase) + if user && user.authenticate(params[:session][:password]) + sign_in user + #redirect goes here + else + render 'new' + end + end + + def destroy + + sign_out + + #I dont know where to redirect to so yeah + # redirect_to sign_in + + end + +end diff --git a/app/helpers/sessions_helper.rb b/app/helpers/sessions_helper.rb new file mode 100644 index 0000000..29a5c90 --- /dev/null +++ b/app/helpers/sessions_helper.rb @@ -0,0 +1,65 @@ +module SessionsHelper + + def sign_in(user) + #create a new remember token + remember_token = User.new_remember_token + #place token inside of the browser + cookies.permanent[:remember_token] = remember_token + #save the hashed token to the database + user.update_attribute(:remember_token, + User.hash(remember_token)) + #set the current user to be the given user + self.current_user = user + end + +#method creating for self.current_user + def current_user=(user) + remember_token = User.hash(cookies[:remember_token]) + @current_user ||= User.find_by(remember_token: remember_token) + end + + # checks if someone is currently signed in + def signed_in? + !current_user.nil? + end + + def sign_out + current_user.update_attribute(:remember_token, User.hash(User.new_remember_token)) + cookies.delete(:remember_token) + self.current_user = nil + end + +=begin + +This is for anyone that cares about how long a user is signed +in: + +Currently I have a user to be signed in forever unless they +log out (cookies.permanent....). + +If you want to change that, change line 7 to this: + +cookies[:remember_token] = { value: remember_token, + expires: 20.years.from_now.utc } + +which will expire the cookie in 20 years from its date of +creation. + +Oddly enough, this line above is equivalent to the: + +cookies.permanent + +This is just a short cut for this line since most people +create permanent cookies these days. + +Other times are: + +10.weeks.from_now + +5.days.ago + +etc... + +=end + +end diff --git a/db/migrate/20140302210209_add_remember_token_to_users.rb b/db/migrate/20140302210209_add_remember_token_to_users.rb new file mode 100644 index 0000000..6d84942 --- /dev/null +++ b/db/migrate/20140302210209_add_remember_token_to_users.rb @@ -0,0 +1,8 @@ +class AddRememberTokenToUsers < ActiveRecord::Migration + #add a remember me token to the database + #this keeps a user signed in until they sign out + def change + add_column :users, :remember_token, :string + add_index :users, :remember_token + end +end -- cgit v1.2.3-2-g168b