diff options
| author | jwijenbergh <jeroenwijenbergh@protonmail.com> | 2023-04-17 11:31:52 +0200 |
|---|---|---|
| committer | Jeroen Wijenbergh <46386452+jwijenbergh@users.noreply.github.com> | 2023-04-18 14:05:19 +0200 |
| commit | 0216a88ff88cf600083eaf64bbf98c373bc376a4 (patch) | |
| tree | a2a3c00ffdfd675e1881c02592715b64d6ba56a6 /internal/oauth/token.go | |
| parent | 0722d68988c7b9acce9c0f51485377b690f0df37 (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.go | 9 |
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 } |
