Add support for logout URL.

This commit is contained in:
2024-07-25 00:21:39 +01:00
parent 4baf3fbefd
commit 3fe92d38e0
5 changed files with 68 additions and 3 deletions
+27
View File
@@ -58,6 +58,27 @@ func (t *TraefikOidc) exchangeCodeForToken(ctx context.Context, code, redirectUR
return result, nil
}
func (t *TraefikOidc) handleLogout(rw http.ResponseWriter, req *http.Request) {
session, err := t.store.Get(req, cookieName)
if err != nil {
handleError(rw, "Session error", http.StatusInternalServerError, t.logger)
return
}
if idToken, ok := session.Values["id_token"].(string); ok {
t.RevokeToken(idToken)
}
// Clear the session
session.Options.MaxAge = -1
session.Values = make(map[interface{}]interface{})
err = session.Save(req, rw)
if err != nil {
handleError(rw, "Failed to save session", http.StatusInternalServerError, t.logger)
return
}
}
func (t *TraefikOidc) handleCallback(rw http.ResponseWriter, req *http.Request) (bool, string) {
ctx := req.Context()
session, err := t.store.Get(req, cookieName)
@@ -208,6 +229,12 @@ func (tc *TokenCache) Get(token string) (*TokenInfo, bool) {
return nil, false
}
func (tc *TokenCache) Delete(token string) {
tc.mutex.Lock()
defer tc.mutex.Unlock()
delete(tc.cache, token)
}
func (tc *TokenCache) Cleanup() {
tc.mutex.Lock()
defer tc.mutex.Unlock()