summaryrefslogtreecommitdiff
path: root/internal/oauth/token.go
diff options
context:
space:
mode:
authorjwijenbergh <jeroenwijenbergh@protonmail.com>2023-04-17 11:31:52 +0200
committerJeroen Wijenbergh <46386452+jwijenbergh@users.noreply.github.com>2023-04-18 14:05:19 +0200
commit0216a88ff88cf600083eaf64bbf98c373bc376a4 (patch)
treea2a3c00ffdfd675e1881c02592715b64d6ba56a6 /internal/oauth/token.go
parent0722d68988c7b9acce9c0f51485377b690f0df37 (diff)
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
Diffstat (limited to 'internal/oauth/token.go')
-rw-r--r--internal/oauth/token.go9
1 files changed, 9 insertions, 0 deletions
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
}