From 0216a88ff88cf600083eaf64bbf98c373bc376a4 Mon Sep 17 00:00:00 2001 From: jwijenbergh Date: Mon, 17 Apr 2023 11:31:52 +0200 Subject: OAuth Token: Set previous refresh token if new refresh token is empty This is for 2.x servers that return an empty refresh token after refreshing --- internal/oauth/token.go | 9 +++++++++ 1 file changed, 9 insertions(+) (limited to 'internal/oauth/token.go') diff --git a/internal/oauth/token.go b/internal/oauth/token.go index a9d2c82..58d6136 100644 --- a/internal/oauth/token.go +++ b/internal/oauth/token.go @@ -89,10 +89,19 @@ func (l *tokenLock) Access() (string, error) { log.Logger.Debugf("No token response after refreshing") return "", errors.New("No token response after refreshing") } + // store the previous refresh token + pr := l.t.Refresh + // get the response as a non-pointer r := *tr e := s.Add(time.Second * time.Duration(r.Expires)) t := Token{Access: r.Access, Refresh: r.Refresh, ExpiredTimestamp: e} l.updateInternal(t) + // set the previous refresh token if the new one is empty + // This is for 2.x servers + if l.t.Refresh == "" { + log.Logger.Debugf("The previous refresh token is set as the response had no refresh token") + l.t.Refresh = pr + } return l.t.Access, nil } -- cgit v1.2.3