user_token.go 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. package models
  2. import (
  3. "context"
  4. "errors"
  5. )
  6. // Typed errors
  7. var (
  8. ErrUserTokenNotFound = errors.New("user token not found")
  9. )
  10. // UserToken represents a user token
  11. type UserToken struct {
  12. Id int64
  13. UserId int64
  14. AuthToken string
  15. PrevAuthToken string
  16. UserAgent string
  17. ClientIp string
  18. AuthTokenSeen bool
  19. SeenAt int64
  20. RotatedAt int64
  21. CreatedAt int64
  22. UpdatedAt int64
  23. UnhashedToken string
  24. }
  25. type RevokeAuthTokenCmd struct {
  26. AuthTokenId int64 `json:"authTokenId"`
  27. }
  28. // UserTokenService are used for generating and validating user tokens
  29. type UserTokenService interface {
  30. CreateToken(ctx context.Context, userId int64, clientIP, userAgent string) (*UserToken, error)
  31. LookupToken(ctx context.Context, unhashedToken string) (*UserToken, error)
  32. TryRotateToken(ctx context.Context, token *UserToken, clientIP, userAgent string) (bool, error)
  33. RevokeToken(ctx context.Context, token *UserToken) error
  34. RevokeAllUserTokens(ctx context.Context, userId int64) error
  35. ActiveTokenCount(ctx context.Context) (int64, error)
  36. GetUserToken(ctx context.Context, userId, userTokenId int64) (*UserToken, error)
  37. GetUserTokens(ctx context.Context, userId int64) ([]*UserToken, error)
  38. }