gtsocial-umbx

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs | README | LICENSE

commit fc81e6443a175c184f76b54b8a00758d095fe402
parent 8106b6985620956ce8cfa4126143a95ca87ea976
Author: tobi <31960611+tsmethurst@users.noreply.github.com>
Date:   Thu, 28 Jul 2022 16:43:42 +0200

[bugfix] remove <= 0 `expires_in` from oauth token response (#731)

* remove <= 0 expired_in from oauth token response

* go fmt
Diffstat:
Minternal/oauth/server.go | 17+++++++++++++++++
1 file changed, 17 insertions(+), 0 deletions(-)

diff --git 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