summaryrefslogtreecommitdiff
path: root/internal/server
diff options
context:
space:
mode:
authorjwijenbergh <jeroenwijenbergh@protonmail.com>2022-11-28 13:28:27 +0100
committerjwijenbergh <jeroenwijenbergh@protonmail.com>2022-11-28 13:50:02 +0100
commit279c0de75629de5868c3ac1b3272a2850e6b62f7 (patch)
treeb01b764baca799fe952f01a25f1cf5e05ced8333 /internal/server
parent7bab6c76599fdfd34ea9bb064d871ed2be01d4c8 (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.go8
-rw-r--r--internal/server/common.go23
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) {