user_token.go 1.0 KB

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