28 lines
607 B
Go
28 lines
607 B
Go
package models
|
|
|
|
import (
|
|
"context"
|
|
"fmt"
|
|
"time"
|
|
)
|
|
|
|
// Session represents a server-held user session.
|
|
type Session struct {
|
|
Base
|
|
|
|
ID string `json:"id"`
|
|
UserID string `json:"userId"`
|
|
CreatedAt time.Time `json:"createdAt"`
|
|
LastActiveAt time.Time `json:"lastActiveAt"`
|
|
ExpiresAt *time.Time `json:"expiresAt,omitempty"`
|
|
}
|
|
|
|
// User returns the user who owns this session.
|
|
func (s *Session) User(ctx context.Context) (*User, error) {
|
|
if ul := s.GetUserLookup(); ul != nil {
|
|
return ul.GetUserByID(ctx, s.UserID)
|
|
}
|
|
|
|
return nil, fmt.Errorf("user lookup not available")
|
|
}
|