summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLibravatar tobi <31960611+tsmethurst@users.noreply.github.com>2022-07-28 16:43:42 +0200
committerLibravatar GitHub <noreply@github.com>2022-07-28 16:43:42 +0200
commitfc81e6443a175c184f76b54b8a00758d095fe402 (patch)
treef5955f08959b8c3657f122255e79da3e5dea531f
parent[feature] add 'state' oauth2 param to /oauth/authorize (#730) (diff)
downloadgotosocial-fc81e6443a175c184f76b54b8a00758d095fe402.tar.xz
[bugfix] remove <= 0 `expires_in` from oauth token response (#731)
* remove <= 0 expired_in from oauth token response * go fmt
-rw-r--r--internal/oauth/server.go17
1 files changed, 17 insertions, 0 deletions
diff --git a/internal/oauth/server.go b/internal/oauth/server.go
index d520b19ec..bb863b740 100644
--- a/internal/oauth/server.go
+++ b/internal/oauth/server.go
@@ -133,6 +133,23 @@ func (s *s) HandleTokenRequest(r *http.Request) (map[string]interface{}, gtserro
}
data := s.server.GetTokenData(ti)
+
+ if expiresInI, ok := data["expires_in"]; ok {
+ switch expiresIn := expiresInI.(type) {
+ case int64:
+ // remove this key from the returned map
+ // if the value is 0 or less, so that clients
+ // don't interpret the token as already expired
+ if expiresIn <= 0 {
+ delete(data, "expires_in")
+ }
+ default:
+ err := errors.New("expires_in was set on token response, but was not an int64")
+ return nil, gtserror.NewErrorInternalError(err)
+ }
+ }
+
+ // add this for mastodon api compatibility
data["created_at"] = ti.GetAccessCreateAt().Unix()
return data, nil