package jwt import ( "time" "github.com/dgrijalva/jwt-go" "github.com/google/uuid" ) // Token contains everything to authenticate a user. type Token struct { username string name string expiry float64 id uuid.UUID } func verifyToken(token *jwt.Token) (jwt.MapClaims, error) { if !token.Valid { return nil, ErrInvalidToken } claims, ok := token.Claims.(jwt.MapClaims) if !ok { return nil, ErrInvalidToken } if !claims.VerifyExpiresAt(time.Now().Unix(), true) { return nil, ErrTokenExpired } return claims, nil } func (t *Token) GetName() string { return t.name } func (t *Token) GetUsername() string { return t.username } func (t *Token) GetExpiry() float64 { return t.expiry } func (t *Token) GetID() uuid.UUID { return t.id }