forked from jkraemer/clearance
/
application_controller.rb
83 lines (66 loc) · 2.18 KB
/
application_controller.rb
1
2
3
4
5
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
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
module Clearance
module App
module Controllers
module ApplicationController
def self.included(controller)
controller.class_eval do
helper_method :current_user
helper_method :signed_in?
hide_action :current_user, :signed_in?
def current_user
@_current_user ||= (user_from_session || user_from_cookie)
end
def signed_in?
! current_user.nil?
end
protected
def authenticate
deny_access unless signed_in?
end
def user_from_session
if session[:user_id]
user = User.find_by_id(session[:user_id])
user && user.email_confirmed? ? user : nil
end
end
def user_from_cookie
if cookies[:remember_token]
user = User.find_by_token(cookies[:remember_token])
user && user.remember? ? user : nil
end
end
# Hook
def sign_user_in(user)
sign_in(user)
end
def sign_in(user)
if user
session[:user_id] = user.id
end
end
def redirect_back_or(default)
session[:return_to] ||= params[:return_to]
if session[:return_to]
redirect_to(session[:return_to])
else
redirect_to(default)
end
session[:return_to] = nil
end
def redirect_to_root
redirect_to root_url
end
def store_location
session[:return_to] = request.request_uri if request.get?
end
def deny_access(flash_message = nil, opts = {})
store_location
flash[:failure] = flash_message if flash_message
render :template => "/sessions/new", :status => :unauthorized
end
end
end
end
end
end
end