You've already forked oauth2-proxy
mirror of
https://github.com/oauth2-proxy/oauth2-proxy.git
synced 2025-07-15 01:44:22 +02:00
Move session locking to refreshSessionIfNeeded method
This commit is contained in:
committed by
Joel Speed
parent
76e3cb3e9a
commit
518e619289
@ -121,21 +121,6 @@ func (s *storedSessionLoader) refreshSessionIfNeeded(rw http.ResponseWriter, req
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
logger.Printf("Refreshing session - User: %s; SessionAge: %s", session.User, session.Age())
|
|
||||||
err := s.refreshSession(rw, req, session)
|
|
||||||
if err != nil {
|
|
||||||
// If a preemptive refresh fails, we still keep the session
|
|
||||||
// if validateSession succeeds.
|
|
||||||
logger.Errorf("Unable to refresh session: %v", err)
|
|
||||||
}
|
|
||||||
|
|
||||||
// Validate all sessions after any Redeem/Refresh operation (fail or success)
|
|
||||||
return s.validateSession(req.Context(), session)
|
|
||||||
}
|
|
||||||
|
|
||||||
// refreshSession attempts to refresh the session with the provider
|
|
||||||
// and will save the session if it was updated.
|
|
||||||
func (s *storedSessionLoader) refreshSession(rw http.ResponseWriter, req *http.Request, session *sessionsapi.SessionState) error {
|
|
||||||
var wasLocked bool
|
var wasLocked bool
|
||||||
var err error
|
var err error
|
||||||
var isLocked bool
|
var isLocked bool
|
||||||
@ -177,6 +162,21 @@ func (s *storedSessionLoader) refreshSession(rw http.ResponseWriter, req *http.R
|
|||||||
}
|
}
|
||||||
}()
|
}()
|
||||||
|
|
||||||
|
logger.Printf("Refreshing session - User: %s; SessionAge: %s", session.User, session.Age())
|
||||||
|
err = s.refreshSession(rw, req, session)
|
||||||
|
if err != nil {
|
||||||
|
// If a preemptive refresh fails, we still keep the session
|
||||||
|
// if validateSession succeeds.
|
||||||
|
logger.Errorf("Unable to refresh session: %v", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Validate all sessions after any Redeem/Refresh operation (fail or success)
|
||||||
|
return s.validateSession(req.Context(), session)
|
||||||
|
}
|
||||||
|
|
||||||
|
// refreshSession attempts to refresh the session with the provider
|
||||||
|
// and will save the session if it was updated.
|
||||||
|
func (s *storedSessionLoader) refreshSession(rw http.ResponseWriter, req *http.Request, session *sessionsapi.SessionState) error {
|
||||||
refreshed, err := s.sessionRefresher(req.Context(), session)
|
refreshed, err := s.sessionRefresher(req.Context(), session)
|
||||||
if err != nil && !errors.Is(err, providers.ErrNotImplemented) {
|
if err != nil && !errors.Is(err, providers.ErrNotImplemented) {
|
||||||
return fmt.Errorf("error refreshing tokens: %v", err)
|
return fmt.Errorf("error refreshing tokens: %v", err)
|
||||||
|
Reference in New Issue
Block a user