28 lines
624 B
Go
28 lines
624 B
Go
package models
|
|
|
|
import (
|
|
"context"
|
|
"fmt"
|
|
"time"
|
|
)
|
|
|
|
// AuthToken represents an authentication token for a user session.
|
|
type AuthToken struct {
|
|
Base
|
|
|
|
Token string `json:"-"`
|
|
UserID string `json:"userId"`
|
|
CreatedAt time.Time `json:"createdAt"`
|
|
ExpiresAt *time.Time `json:"expiresAt,omitempty"`
|
|
LastUsedAt *time.Time `json:"lastUsedAt,omitempty"`
|
|
}
|
|
|
|
// User returns the user who owns this token.
|
|
func (t *AuthToken) User(ctx context.Context) (*User, error) {
|
|
if ul := t.GetUserLookup(); ul != nil {
|
|
return ul.GetUserByID(ctx, t.UserID)
|
|
}
|
|
|
|
return nil, fmt.Errorf("user lookup not available")
|
|
}
|