diff options
| author | jwijenbergh <jeroenwijenbergh@protonmail.com> | 2022-11-28 13:28:27 +0100 |
|---|---|---|
| committer | jwijenbergh <jeroenwijenbergh@protonmail.com> | 2022-11-28 13:50:02 +0100 |
| commit | 279c0de75629de5868c3ac1b3272a2850e6b62f7 (patch) | |
| tree | b01b764baca799fe952f01a25f1cf5e05ced8333 /internal/server | |
| parent | 7bab6c76599fdfd34ea9bb064d871ed2be01d4c8 (diff) | |
OAuth: Refactor Token getting and do not save them in the config
This commit refactors getting the tokens into receiver methods. This
means that functions do not have to call the cryptic "EnsureTokens"
method. The receiver getter then already verifier whether or not the
tokens could be obtained (and refreshes too). The downside is that
some things are now private, so testing for invalid tokens needs to be
done somewhere else.
This needs another patch such that clients can save the tokens
themselves using a keyring.
Diffstat (limited to 'internal/server')
| -rw-r--r-- | internal/server/api.go | 8 | ||||
| -rw-r--r-- | internal/server/common.go | 23 |
2 files changed, 14 insertions, 17 deletions
diff --git a/internal/server/api.go b/internal/server/api.go index eb55bd8..65aadca 100644 --- a/internal/server/api.go +++ b/internal/server/api.go @@ -64,13 +64,13 @@ func apiAuthorized( url.Path = path.Join(url.Path, endpoint) // Make sure the tokens are valid, this will return an error if re-login is needed - oauthErr := EnsureTokens(server) - if oauthErr != nil { - return nil, nil, types.NewWrappedError(errorMessage, oauthErr) + token, tokenErr := HeaderToken(server) + if tokenErr != nil { + return nil, nil, types.NewWrappedError(errorMessage, tokenErr) } headerKey := "Authorization" - headerValue := fmt.Sprintf("Bearer %s", HeaderToken(server)) + headerValue := fmt.Sprintf("Bearer %s", token) if opts.Headers != nil { opts.Headers.Add(headerKey, headerValue) } else { diff --git a/internal/server/common.go b/internal/server/common.go index 351b3af..7f6599a 100644 --- a/internal/server/common.go +++ b/internal/server/common.go @@ -258,28 +258,25 @@ func OAuthExchange(server Server) error { return server.OAuth().Exchange() } -func HeaderToken(server Server) string { - return server.OAuth().Token.Access +func HeaderToken(server Server) (string, error) { + token, tokenErr := server.OAuth().AccessToken() + if tokenErr != nil { + return "", types.NewWrappedError("failed getting server token for HTTP Header", tokenErr) + } + return token, nil } func MarkTokenExpired(server Server) { - server.OAuth().Token.ExpiredTimestamp = time.Now() + server.OAuth().SetTokenExpired() } func MarkTokensForRenew(server Server) { - server.OAuth().Token = oauth.OAuthToken{} -} - -func EnsureTokens(server Server) error { - ensureErr := server.OAuth().EnsureTokens() - if ensureErr != nil { - return types.NewWrappedError("failed ensuring server tokens", ensureErr) - } - return nil + server.OAuth().SetTokenRenew() } func NeedsRelogin(server Server) bool { - return EnsureTokens(server) != nil + _, tokenErr := HeaderToken(server) + return tokenErr != nil } func CancelOAuth(server Server) { |
