Files
oslstats/internal/store/tokencheck.go
2026-02-08 20:52:58 +11:00

43 lines
879 B
Go

package store
import (
"errors"
"time"
"git.haelnorr.com/h/oslstats/internal/db"
)
type TokenCheck struct {
Token *db.DiscordToken
ExpiresAt time.Time
}
func (s *Store) NewTokenCheck(user *db.User, token *db.DiscordToken) error {
if user == nil {
return errors.New("user cannot be nil")
}
if token == nil {
return errors.New("token cannot be nil")
}
s.tokenchecks.Store(user.ID, &TokenCheck{
Token: token,
ExpiresAt: time.Now().Add(5 * time.Minute),
})
return nil
}
func (s *Store) CheckToken(user *db.User) *db.DiscordToken {
res, ok := s.tokenchecks.Load(user.ID)
if !ok {
return nil
}
check := (res).(*TokenCheck)
check.ExpiresAt = time.Now().Add(5 * time.Minute)
s.tokenchecks.Delete(user.ID)
s.tokenchecks.Store(user.ID, &TokenCheck{
Token: check.Token,
ExpiresAt: time.Now().Add(5 * time.Minute),
})
return check.Token
}