| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576 |
- package authtoken
- import (
- "errors"
- "fmt"
- "github.com/grafana/grafana/pkg/services/auth"
- )
- // Typed errors
- var (
- ErrAuthTokenNotFound = errors.New("user auth token not found")
- )
- type userAuthToken struct {
- Id int64
- UserId int64
- AuthToken string
- PrevAuthToken string
- UserAgent string
- ClientIp string
- AuthTokenSeen bool
- SeenAt int64
- RotatedAt int64
- CreatedAt int64
- UpdatedAt int64
- UnhashedToken string `xorm:"-"`
- }
- func (uat *userAuthToken) toUserToken() (auth.UserToken, error) {
- if uat == nil {
- return nil, fmt.Errorf("needs pointer to userAuthToken struct")
- }
- return &userTokenImpl{
- userAuthToken: uat,
- }, nil
- }
- type userToken interface {
- auth.UserToken
- GetModel() *userAuthToken
- }
- type userTokenImpl struct {
- *userAuthToken
- }
- func (ut *userTokenImpl) GetUserId() int64 {
- return ut.UserId
- }
- func (ut *userTokenImpl) GetToken() string {
- return ut.UnhashedToken
- }
- func (ut *userTokenImpl) GetModel() *userAuthToken {
- return ut.userAuthToken
- }
- func extractModelFromToken(token auth.UserToken) (*userAuthToken, error) {
- ut, ok := token.(userToken)
- if !ok {
- return nil, fmt.Errorf("failed to cast token")
- }
- return ut.GetModel(), nil
- }
- // UserAuthTokenService are used for generating and validating user auth tokens
- type UserAuthTokenService interface {
- CreateToken(userId int64, clientIP, userAgent string) (auth.UserToken, error)
- LookupToken(unhashedToken string) (auth.UserToken, error)
- TryRotateToken(token auth.UserToken, clientIP, userAgent string) (bool, error)
- RevokeToken(token auth.UserToken) error
- }
|