From 7bc60988c26cadeffa6959301b7270bffaf52bf5 Mon Sep 17 00:00:00 2001 From: "Gustavo \"Guz\" L de Mello" Date: Tue, 10 Jun 2025 19:06:15 -0300 Subject: [PATCH] feat(service,token): token.Parse method --- service/token.go | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/service/token.go b/service/token.go index 1e56374..99a39ff 100644 --- a/service/token.go +++ b/service/token.go @@ -83,3 +83,21 @@ func (svc *Token) Issue(user model.User) (string, error) { // TODO: Return a ref return signed, nil } +func (svc Token) Parse(tokenStr string) (*jwt.Token, error) { + svc.assert.NotNil(svc.publicKey) + + token, err := jwt.Parse(tokenStr, func(t *jwt.Token) (interface{}, error) { + return svc.publicKey, nil + }, jwt.WithValidMethods([]string{jwt.SigningMethodES256.Alg()})) + if err != nil { + return nil, errors.Join(errors.New("service: invalid token"), err) + } + + _, ok := token.Claims.(jwt.RegisteredClaims) + if !ok { + return nil, errors.New("service: invalid claims type") + } + + return token, nil +} +