File tree Expand file tree Collapse file tree 3 files changed +31
-1
lines changed Expand file tree Collapse file tree 3 files changed +31
-1
lines changed Original file line number Diff line number Diff line change @@ -2,13 +2,15 @@ class ActiveSessionsController < ApplicationController
2
2
before_action :authenticate_user!
3
3
4
4
def destroy
5
+ user = current_user
5
6
@active_session = current_user . active_sessions . find ( params [ :id ] )
6
7
7
8
@active_session . destroy
8
9
9
10
if current_user
10
11
redirect_to account_path , notice : "Session deleted."
11
12
else
13
+ forget ( user )
12
14
reset_session
13
15
redirect_to root_path , notice : "Signed out."
14
16
end
@@ -17,6 +19,7 @@ def destroy
17
19
def destroy_all
18
20
current_user
19
21
22
+ forget ( current_user )
20
23
current_user . active_sessions . destroy_all
21
24
reset_session
22
25
Original file line number Diff line number Diff line change @@ -18,6 +18,18 @@ class ActiveSessionsControllerTest < ActionDispatch::IntegrationTest
18
18
assert_not_nil flash [ :notice ]
19
19
end
20
20
21
+ test "should destroy all active sessions and forget active sessions" do
22
+ login @confirmed_user , remember_user : true
23
+ @confirmed_user . active_sessions . create!
24
+
25
+ assert_difference ( "ActiveSession.count" , -2 ) do
26
+ delete destroy_all_active_sessions_path
27
+ end
28
+
29
+ assert_nil current_user
30
+ assert cookies [ :remember_token ] . blank?
31
+ end
32
+
21
33
test "should destroy another session" do
22
34
login @confirmed_user
23
35
@confirmed_user . active_sessions . create!
@@ -42,4 +54,15 @@ class ActiveSessionsControllerTest < ActionDispatch::IntegrationTest
42
54
assert_nil current_user
43
55
assert_not_nil flash [ :notice ]
44
56
end
57
+
58
+ test "should destroy current session and forget current active session" do
59
+ login @confirmed_user , remember_user : true
60
+
61
+ assert_difference ( "ActiveSession.count" , -1 ) do
62
+ delete active_session_path ( @confirmed_user . active_sessions . last )
63
+ end
64
+
65
+ assert_nil current_user
66
+ assert cookies [ :remember_token ] . blank?
67
+ end
45
68
end
Original file line number Diff line number Diff line change @@ -11,7 +11,11 @@ class ActiveSupport::TestCase
11
11
12
12
# Add more helper methods to be used by all tests here...
13
13
def current_user
14
- session [ :current_active_session_id ] && ActiveSession . find_by ( id : session [ :current_active_session_id ] ) &.user
14
+ if session [ :current_active_session_id ] . present?
15
+ ActiveSession . find_by ( id : session [ :current_active_session_id ] ) &.user
16
+ else cookies [ :remember_token ] . present?
17
+ User . find_by ( remember_token : cookies [ :remember_token ] )
18
+ end
15
19
end
16
20
17
21
def login ( user , remember_user : nil )
You can’t perform that action at this time.
0 commit comments