Module: Clearance::App::Controllers::SessionsController

Defined in:
lib/clearance/app/controllers/sessions_controller.rb

Class Method Summary collapse

Class Method Details

.included(controller) ⇒ Object



6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
# File 'lib/clearance/app/controllers/sessions_controller.rb', line 6

def self.included(controller)
  controller.class_eval do
    
    protect_from_forgery :except => :create
    filter_parameter_logging :password

    def create
      @user = User.authenticate(params[:session][:email], 
                                params[:session][:password])
      if @user.nil?
        flash.now[:notice] = "Bad email or password."
        render :action => :new
      else
        if @user.email_confirmed?
          remember(@user) if remember?
          sign_user_in(@user)
          flash[:notice] = "Signed in successfully"
          redirect_back_or url_after_create
        else
          deny_access("User has not confirmed email.")
        end
      end
    end

    def destroy
      forget(current_user)
      reset_session
      flash[:notice] = "You have been signed out."
      redirect_to url_after_destroy
    end

    private
    
    def remember?
      params[:session] && params[:session][:remember_me] == "1"
    end
    
    def remember(user)
      user.remember_me!
      cookies[:remember_token] = { :value   => user.token, 
                                   :expires => user.token_expires_at }
    end

    def forget(user)
      user.forget_me! if user
      cookies.delete :remember_token
    end

    def url_after_create
      root_url
    end

    def url_after_destroy
      new_session_url
    end
    
  end
end