Skip to content

Commit

Permalink
Do not use permanent when reading from cookies (#91)
Browse files Browse the repository at this point in the history
When we want to store a permanent cookie, we have to use the `permanent` accessor. When reading, this is not needed. See [documentation (https://api.rubyonrails.org/classes/ActionDispatch/Cookies/ChainedCookieJars.html#method-i-permanent) :

> This jar is only meant for writing. You'll read permanent cookies through the regular accessor.

When we want to check for a cookie existence, instead of doing:

`cookies.encrypted[:remember_token].present?`

we can do just:

`cookies[:remember_token]`
  • Loading branch information
fredplante authored Mar 17, 2023
1 parent 52ee134 commit 0416b6f
Show file tree
Hide file tree
Showing 3 changed files with 12 additions and 13 deletions.
18 changes: 9 additions & 9 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -1113,8 +1113,8 @@ module Authentication
def current_user
Current.user ||= if session[:current_user_id].present?
User.find_by(id: session[:current_user_id])
elsif cookies.permanent.encrypted[:remember_token].present?
User.find_by(remember_token: cookies.permanent.encrypted[:remember_token])
elsif cookies[:remember_token]
User.find_by(remember_token: cookies.encrypted[:remember_token])
end
end
...
Expand Down Expand Up @@ -1373,8 +1373,8 @@ module Authentication
def current_user
Current.user = if session[:current_active_session_id].present?
ActiveSession.find_by(id: session[:current_active_session_id]).user
elsif cookies.permanent.encrypted[:remember_token].present?
User.find_by(remember_token: cookies.permanent.encrypted[:remember_token])
elsif cookies[:remember_token]
User.find_by(remember_token: cookies.encrypted[:remember_token])
end
end
...
Expand Down Expand Up @@ -1586,8 +1586,8 @@ module Authentication
def current_user
Current.user = if session[:current_active_session_id].present?
ActiveSession.find_by(id: session[:current_active_session_id])&.user
elsif cookies.permanent.encrypted[:remember_token].present?
User.find_by(remember_token: cookies.permanent.encrypted[:remember_token])
elsif cookies[:remember_token]
User.find_by(remember_token: cookies.encrypted[:remember_token])
end
end
...
Expand Down Expand Up @@ -1675,16 +1675,16 @@ module Authentication
end
...
def remember(active_session)
cookies.permanent.encrypted[:remember_token] = active_session.remember_token
cookies.encrypted[:remember_token] = active_session.remember_token
end
...
private

def current_user
Current.user = if session[:current_active_session_id].present?
ActiveSession.find_by(id: session[:current_active_session_id])&.user
elsif cookies.permanent.encrypted[:remember_token].present?
ActiveSession.find_by(remember_token: cookies.permanent.encrypted[:remember_token])&.user
elsif cookies[:remember_token]
ActiveSession.find_by(remember_token: cookies.encrypted[:remember_token])&.user
end
end
...
Expand Down
4 changes: 2 additions & 2 deletions app/controllers/concerns/authentication.rb
Original file line number Diff line number Diff line change
Expand Up @@ -43,8 +43,8 @@ def remember(active_session)
def current_user
Current.user = if session[:current_active_session_id].present?
ActiveSession.find_by(id: session[:current_active_session_id])&.user
elsif cookies.permanent.encrypted[:remember_token].present?
ActiveSession.find_by(remember_token: cookies.permanent.encrypted[:remember_token])&.user
elsif cookies[:remember_token]
ActiveSession.find_by(remember_token: cookies.encrypted[:remember_token])&.user
end
end

Expand Down
3 changes: 1 addition & 2 deletions test/test_helper.rb
Original file line number Diff line number Diff line change
Expand Up @@ -13,8 +13,7 @@ class ActiveSupport::TestCase
def current_user
if session[:current_active_session_id].present?
ActiveSession.find_by(id: session[:current_active_session_id])&.user
else
cookies[:remember_token].present?
elsif cookies[:remember_token]
ActiveSession.find_by(remember_token: cookies[:remember_token])&.user
end
end
Expand Down

0 comments on commit 0416b6f

Please sign in to comment.