Skip to content

Commit c4ef65e

Browse files
committed
fix: set token ttl correctly in redis
1 parent e1d98b1 commit c4ef65e

File tree

2 files changed

+8
-9
lines changed

2 files changed

+8
-9
lines changed

internal/sessions/session_maker.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,9 +32,9 @@ func (sm *SessionMakerImpl) NewSession() (models.Session, error) {
3232
if session.IdleTTL() == time.Duration(0) {
3333
session.ExpiresAt = time.Time{}
3434
} else if session.MaxTTL() == time.Duration(0) {
35-
session.ExpiresAt = session.CreatedAt.Add(session.MaxTTL())
36-
} else {
3735
session.ExpiresAt = session.CreatedAt.Add(session.IdleTTL())
36+
} else {
37+
session.ExpiresAt = session.CreatedAt.Add(session.MaxTTL())
3838
}
3939
slog.Info("NEW SESSION", "session", session)
4040
return session, nil

internal/sessions/token_handling.go

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package sessions
22

33
import (
4+
"log/slog"
45
"time"
56

67
"github.com/SwissDataScienceCenter/renku-gateway/internal/gwerrors"
@@ -135,11 +136,12 @@ func (sessions *SessionStore) SaveTokens(c echo.Context, session *models.Session
135136
session.TokenIDs = models.SerializableMap{}
136137
}
137138
session.TokenIDs[providerID] = tokens.AccessToken.ID
138-
expiresAt := sessions.getTokenStorageExpiration(tokens, *session)
139+
expiresAt := sessions.getTokenStorageExpiration(*session)
139140
err = sessions.tokenStore.SetAccessToken(c.Request().Context(), tokens.AccessToken)
140141
if err != nil {
141142
return err
142143
}
144+
slog.Info("setting expiry for access token", "provider", providerID, "expiresAt", expiresAt, "maxTTL", session.MaxTTL(), "createdAt", session.CreatedAt, "maxTTLS", session.MaxTTLSeconds)
143145
err = sessions.tokenStore.SetAccessTokenExpiry(c.Request().Context(), tokens.AccessToken, expiresAt)
144146
if err != nil {
145147
return err
@@ -148,6 +150,7 @@ func (sessions *SessionStore) SaveTokens(c echo.Context, session *models.Session
148150
if err != nil {
149151
return err
150152
}
153+
slog.Info("setting expiry for refresh token", "provider", providerID, "expiresAt", expiresAt, "maxTTL", session.MaxTTL(), "createdAt", session.CreatedAt)
151154
err = sessions.tokenStore.SetRefreshTokenExpiry(c.Request().Context(), tokens.RefreshToken, expiresAt)
152155
if err != nil {
153156
return err
@@ -156,6 +159,7 @@ func (sessions *SessionStore) SaveTokens(c echo.Context, session *models.Session
156159
if err != nil {
157160
return err
158161
}
162+
slog.Info("setting expiry for id token", "provider", providerID, "expiresAt", expiresAt, "maxTTL", session.MaxTTL(), "createdAt", session.CreatedAt)
159163
err = sessions.tokenStore.SetIDTokenExpiry(c.Request().Context(), tokens.IDToken, expiresAt)
160164
if err != nil {
161165
return err
@@ -175,11 +179,6 @@ func (*SessionStore) idTokenKey(tokenID string) string {
175179
return IDTokenCtxKey + ":" + tokenID
176180
}
177181

178-
// getTokenStorageExpiration returns the max session expiration unless the provider is Renku or GitLab, in which case there is no expiration
179-
func (*SessionStore) getTokenStorageExpiration(tokens models.AuthTokenSet, session models.Session) time.Time {
180-
providerID := tokens.AccessToken.ProviderID
181-
if providerID == "renku" || providerID == "gitlab" {
182-
return time.Time{}
183-
}
182+
func (*SessionStore) getTokenStorageExpiration(session models.Session) time.Time {
184183
return session.CreatedAt.Add(session.MaxTTL())
185184
}

0 commit comments

Comments
 (0)