Skip to content

Commit e246fa9

Browse files
author
Pierre Pretorius
committed
Remove state and origin from session once used.
1 parent 24b847d commit e246fa9

File tree

1 file changed

+2
-2
lines changed

1 file changed

+2
-2
lines changed

lib/omniauth/strategies/oauth2.rb

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -71,14 +71,14 @@ def callback_phase # rubocop:disable AbcSize, CyclomaticComplexity, MethodLength
7171
error = request.params["error_reason"] || request.params["error"]
7272
if error
7373
fail!(error, CallbackError.new(request.params["error"], request.params["error_description"] || request.params["error_reason"], request.params["error_uri"]))
74-
elsif !options.provider_ignores_state && (request.params["state"].to_s.empty? || session["omniauth.states"].empty? || !session["omniauth.states"].include?(request.params["state"]))
74+
elsif !options.provider_ignores_state && (request.params["state"].to_s.empty? || session["omniauth.states"].empty? || !session["omniauth.states"].delete(request.params["state"]))
7575
fail!(:csrf_detected, CallbackError.new(:csrf_detected, "CSRF detected"))
7676
else
7777
self.access_token = build_access_token
7878
self.access_token = access_token.refresh! if access_token.expired?
7979

8080
if session['omniauth.state_origins'] && session['omniauth.state_origins'][request.params['state']]
81-
env['omniauth.origin'] = session['omniauth.state_origins'][request.params['state']]
81+
env['omniauth.origin'] = session['omniauth.state_origins'].delete(request.params['state'])
8282
end
8383
super
8484
end

0 commit comments

Comments
 (0)