Skip to content

Commit a68b297

Browse files
committed
[auth] optimize device auth
1 parent 229b016 commit a68b297

File tree

2 files changed

+24
-8
lines changed

2 files changed

+24
-8
lines changed

internal/sms-gateway/modules/auth/service.go

+23-7
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,8 @@ type Service struct {
3838
users *repositories.UsersRepository
3939
usersCache *cache.Cache[models.User]
4040

41-
devicesSvc *devices.Service
41+
devicesSvc *devices.Service
42+
devicesCache *cache.Cache[models.Device]
4243

4344
logger *zap.Logger
4445

@@ -55,7 +56,8 @@ func New(params Params) *Service {
5556
logger: params.Logger.Named("Service"),
5657
idgen: idgen,
5758

58-
usersCache: cache.New[models.User](cache.Config{TTL: 1 * time.Hour}),
59+
usersCache: cache.New[models.User](cache.Config{TTL: 1 * time.Hour}),
60+
devicesCache: cache.New[models.Device](cache.Config{TTL: 10 * time.Minute}),
5961
}
6062
}
6163

@@ -106,14 +108,28 @@ func (s *Service) AuthorizeRegistration(token string) error {
106108
}
107109

108110
func (s *Service) AuthorizeDevice(token string) (models.Device, error) {
109-
device, err := s.devicesSvc.Get(devices.WithToken(token))
111+
hash := sha256.Sum256([]byte(token))
112+
cacheKey := hex.EncodeToString(hash[:])
113+
114+
device, err := s.devicesCache.Get(cacheKey)
110115
if err != nil {
111-
return device, err
116+
device, err = s.devicesSvc.Get(devices.WithToken(token))
117+
if err != nil {
118+
return device, fmt.Errorf("can't get device: %w", err)
119+
}
120+
121+
if err := s.devicesCache.Set(cacheKey, device); err != nil {
122+
s.logger.Error("can't cache device", zap.Error(err))
123+
}
112124
}
113125

114-
if err := s.devicesSvc.UpdateLastSeen(device.ID); err != nil {
115-
s.logger.Error("can't update last seen", zap.Error(err))
116-
}
126+
go func(id string) {
127+
if err := s.devicesSvc.UpdateLastSeen(id); err != nil {
128+
s.logger.Error("can't update last seen", zap.Error(err))
129+
}
130+
}(device.ID)
131+
132+
device.LastSeen = time.Now()
117133

118134
return device, nil
119135
}

pkg/swagger/docs/mobile.http

+1-1
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44

55
###
66
GET {{baseUrl}}/device HTTP/1.1
7-
Authorization: Bearer {{mobileToken}}1
7+
Authorization: Bearer {{mobileToken}}
88

99
###
1010
POST {{baseUrl}}/device HTTP/1.1

0 commit comments

Comments
 (0)