-
Notifications
You must be signed in to change notification settings - Fork 1
/
sessions_helper.rb
52 lines (42 loc) · 1.11 KB
/
sessions_helper.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
module SessionsHelper
def sign_in(user)
cookies.permanent[:remember_token] = user.remember_token
#The use of self is necessary in this context because without self,
#Ruby would simply create a local variable called current_user.
self.current_user = user
end
def signed_in?
!current_user.nil?
end
def current_user=(user)
@current_user = user
end
def current_user
@current_user ||= user_from_remember_token
end
def current_user?(user)
user == current_user
end
def sign_out
self.current_user = nil#current_user = nil
cookies.delete(:remember_token)
end
def redirect_back_or(default)
redirect_to(session[:return_to] || default)
session.delete(:return_to)
end
def store_location
session[:return_to] = request.fullpath
end
def signed_in_user
unless signed_in?
store_location
redirect_to signin_path, notice: "Please sign in."
end
end
private
def user_from_remember_token
remember_token = cookies[:remember_token]
User.find_by_remember_token(remember_token) unless remember_token.nil?
end
end