refactor errors

This commit is contained in:
2024-10-14 13:29:05 -05:00
parent 1e33a81a2c
commit 39d4a1e7f0
20 changed files with 398 additions and 444 deletions

View File

@@ -1,8 +1,6 @@
package core
import (
"errors"
"fmt"
"github.com/golang-jwt/jwt/v5"
"go-nkode/util"
"log"
@@ -78,42 +76,37 @@ func EncodeAndSignClaims(claims jwt.Claims) (string, error) {
return token.SignedString(secret)
}
func ParseRefreshToken(refreshToken string) (*jwt.RegisteredClaims, error) {
token, err := jwt.ParseWithClaims(refreshToken, &jwt.RegisteredClaims{}, func(token *jwt.Token) (interface{}, error) {
return secret, nil
})
if err != nil {
return nil, fmt.Errorf("error parsing refresh token: %w", err)
}
claims, ok := token.Claims.(*jwt.RegisteredClaims)
if !ok {
return nil, errors.New("unable to parse claims")
}
return claims, nil
func ParseRegisteredClaimToken(token string) (*jwt.RegisteredClaims, error) {
return parseJwt[*jwt.RegisteredClaims](token, &jwt.RegisteredClaims{})
}
func ParseAccessToken(accessToken string) (*jwt.RegisteredClaims, error) {
token, err := jwt.ParseWithClaims(accessToken, &jwt.RegisteredClaims{}, func(token *jwt.Token) (interface{}, error) {
func ParseRestNKodeToken(resetNKodeToken string) (*ResetNKodeClaims, error) {
return parseJwt[*ResetNKodeClaims](resetNKodeToken, &ResetNKodeClaims{})
}
func parseJwt[T *ResetNKodeClaims | *jwt.RegisteredClaims](tokenStr string, claim jwt.Claims) (T, error) {
token, err := jwt.ParseWithClaims(tokenStr, claim, func(token *jwt.Token) (interface{}, error) {
return secret, nil
})
if err != nil {
return nil, fmt.Errorf("error parsing refresh token: %w", err)
log.Printf("error parsing refresh token: %v", err)
return nil, ErrInvalidJwt
}
claims, ok := token.Claims.(*jwt.RegisteredClaims)
claims, ok := token.Claims.(T)
if !ok {
return nil, errors.New("unable to parse claims")
return nil, ErrInvalidJwt
}
return claims, nil
}
func ClaimExpired(claims jwt.RegisteredClaims) error {
if claims.ExpiresAt == nil {
return errors.New("claim exp is nil")
return ErrClaimExpOrNil
}
if claims.ExpiresAt.Time.After(time.Now()) {
return nil
}
return errors.New("claim expired")
return ErrClaimExpOrNil
}
func ResetNKodeToken(userEmail UserEmail, customerId CustomerId) (string, error) {
@@ -127,17 +120,3 @@ func ResetNKodeToken(userEmail UserEmail, customerId CustomerId) (string, error)
}
return EncodeAndSignClaims(resetClaims)
}
func ParseRestNKodeToken(resetNKodeToken string) (*ResetNKodeClaims, error) {
token, err := jwt.ParseWithClaims(resetNKodeToken, &ResetNKodeClaims{}, func(token *jwt.Token) (interface{}, error) {
return secret, nil
})
if err != nil {
return nil, fmt.Errorf("error parsing refresh token: %w", err)
}
claims, ok := token.Claims.(*ResetNKodeClaims)
if !ok {
return nil, errors.New("unable to parse claims")
}
return claims, nil
}