Skip to content

Commit 4c6d149

Browse files
committed
[jwt] minor fixes
1 parent a03ff64 commit 4c6d149

File tree

4 files changed

+19
-10
lines changed

4 files changed

+19
-10
lines changed

internal/sms-gateway/jwt/errors.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ var (
66
ErrDisabled = errors.New("jwt disabled")
77
ErrInitFailed = errors.New("failed to initialize jwt")
88
ErrInvalidConfig = errors.New("invalid config")
9+
ErrInvalidToken = errors.New("invalid token")
910
ErrTokenRevoked = errors.New("token revoked")
1011
ErrUnexpectedSigningMethod = errors.New("unexpected signing method")
1112
)

internal/sms-gateway/jwt/module.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,8 @@ func Module() fx.Option {
1313
fx.Provide(func(factory cache.Factory) (cache.Cache, error) {
1414
return factory.New("jwt")
1515
}, fx.Private),
16-
fx.Provide(newRevokedStorage, fx.Private),
17-
fx.Provide(func(config Config, revoked *revokedStorage) (Service, error) {
16+
fx.Provide(NewRevokedStorage, fx.Private),
17+
fx.Provide(func(config Config, revoked *RevokedStorage) (Service, error) {
1818
if config.Secret == "" {
1919
return newDisabled(), nil
2020
}

internal/sms-gateway/jwt/revoked.go

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -9,17 +9,17 @@ import (
99
"github.com/android-sms-gateway/server/pkg/cache"
1010
)
1111

12-
type revokedStorage struct {
12+
type RevokedStorage struct {
1313
storage cache.Cache
1414
}
1515

16-
func newRevokedStorage(storage cache.Cache) *revokedStorage {
17-
return &revokedStorage{
16+
func NewRevokedStorage(storage cache.Cache) *RevokedStorage {
17+
return &RevokedStorage{
1818
storage: storage,
1919
}
2020
}
2121

22-
func (r *revokedStorage) IsRevoked(ctx context.Context, token string) (bool, error) {
22+
func (r *RevokedStorage) IsRevoked(ctx context.Context, token string) (bool, error) {
2323
_, err := r.storage.Get(ctx, token)
2424
if errors.Is(err, cache.ErrKeyNotFound) {
2525
return false, nil
@@ -31,6 +31,6 @@ func (r *revokedStorage) IsRevoked(ctx context.Context, token string) (bool, err
3131
return true, nil
3232
}
3333

34-
func (r *revokedStorage) Revoke(ctx context.Context, token string, ttl time.Duration) error {
34+
func (r *RevokedStorage) Revoke(ctx context.Context, token string, ttl time.Duration) error {
3535
return r.storage.Set(ctx, token, nil, cache.WithTTL(ttl))
3636
}

internal/sms-gateway/jwt/service.go

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,12 +20,12 @@ type Service interface {
2020
type service struct {
2121
config Config
2222

23-
revoked *revokedStorage
23+
revoked *RevokedStorage
2424

2525
idFactory func() string
2626
}
2727

28-
func New(config Config, revoked *revokedStorage) (Service, error) {
28+
func New(config Config, revoked *RevokedStorage) (Service, error) {
2929
if err := config.Validate(); err != nil {
3030
return nil, err
3131
}
@@ -49,6 +49,14 @@ func New(config Config, revoked *revokedStorage) (Service, error) {
4949
}
5050

5151
func (s *service) GenerateToken(userID string, scopes []string, ttl time.Duration) (string, error) {
52+
if userID == "" {
53+
return "", fmt.Errorf("%w: user id is required", ErrInvalidConfig)
54+
}
55+
56+
if len(scopes) == 0 {
57+
return "", fmt.Errorf("%w: scopes are required", ErrInvalidConfig)
58+
}
59+
5260
if ttl < 0 {
5361
return "", fmt.Errorf("%w: ttl must be non-negative", ErrInvalidConfig)
5462
}
@@ -97,7 +105,7 @@ func (s *service) ParseToken(ctx context.Context, token string) (*Claims, error)
97105

98106
claims, ok := parsedToken.Claims.(*Claims)
99107
if !ok || !parsedToken.Valid {
100-
return nil, fmt.Errorf("invalid token")
108+
return nil, ErrInvalidToken
101109
}
102110

103111
revoked, err := s.revoked.IsRevoked(ctx, claims.ID)

0 commit comments

Comments
 (0)