|
1 | 1 | class SessionsController < ApplicationController |
2 | | - skip_before_filter :require_login, :only => [:new, :create] |
| 2 | + skip_before_filter :require_login, :only => [:new, :create, :login] |
3 | 3 | def new |
4 | 4 | end |
5 | | - |
6 | | - def create |
7 | | - user = User.authenticate( |
8 | | - params.has_key?(:email) ? params[:email] : nil, |
9 | | - params[:password]) |
10 | | - if user |
11 | | - session[:user_id] = user.id |
12 | | - redirect_to root_url, :notice => "Logged in!" |
| 5 | + |
| 6 | + def login |
| 7 | + @user = User.new |
| 8 | + if logged_in? |
| 9 | + redirect_to root_url |
| 10 | + elsif !logged_in? && cookies.signed[:user_id] |
| 11 | + user = User.auth_with_cookie(cookies.signed[:user_id]) |
| 12 | + session[:user_id] = cookies.signed[:user_id] |
| 13 | + redirect_to root_url, :notice => "Welcome back!" |
| 14 | + elsif request.post? |
| 15 | + user = User.authenticate( |
| 16 | + params.has_key?(:email) ? params[:email] : nil, |
| 17 | + params[:password]) |
| 18 | + if user |
| 19 | + if params[:remember_me] == 'yes' |
| 20 | + cookies.permanent.signed[:user_id] = user.id |
| 21 | + end |
| 22 | + session[:user_id] = user.id |
| 23 | + redirect_to root_url, :notice => "Logged in!" |
| 24 | + else |
| 25 | + redirect_to root_url, :notice => "Invalid email or password" |
| 26 | + end |
13 | 27 | else |
14 | | - redirect_to root_url, :notice => "Invalid email or password" |
| 28 | + render "home" |
15 | 29 | end |
16 | 30 | end |
17 | | - |
| 31 | + |
18 | 32 | def destroy |
19 | 33 | session[:user_id] = nil |
| 34 | + cookies.delete :user_id |
20 | 35 | redirect_to root_url, :notice => "Logged out!" |
21 | 36 | end |
22 | 37 | end |
0 commit comments