Documentation
¶
Index ¶
- Constants
- Variables
- func InvalidToken() *errs.AuthsomeError
- func MaxSessionsReached(limit int) *errs.AuthsomeError
- func MissingAppContext() *errs.AuthsomeError
- func SessionCreationFailed(err error) *errs.AuthsomeError
- func SessionExpired() *errs.AuthsomeError
- func SessionNotFound() *errs.AuthsomeError
- func SessionRevocationFailed(err error) *errs.AuthsomeError
- type Config
- type CreateSessionRequest
- type ListSessionsFilter
- type ListSessionsResponse
- type Repository
- type Service
- func (s *Service) Create(ctx context.Context, req *CreateSessionRequest) (*Session, error)
- func (s *Service) FindByID(ctx context.Context, id xid.ID) (*Session, error)
- func (s *Service) FindByToken(ctx context.Context, token string) (*Session, error)
- func (s *Service) ListSessions(ctx context.Context, filter *ListSessionsFilter) (*ListSessionsResponse, error)
- func (s *Service) Revoke(ctx context.Context, token string) error
- func (s *Service) RevokeByID(ctx context.Context, id xid.ID) error
- type ServiceInterface
- type Session
Constants ¶
const ( CodeSessionNotFound = "SESSION_NOT_FOUND" CodeSessionExpired = "SESSION_EXPIRED" CodeSessionCreationFailed = "SESSION_CREATION_FAILED" CodeSessionRevocationFailed = "SESSION_REVOCATION_FAILED" CodeInvalidToken = "INVALID_TOKEN" CodeMaxSessionsReached = "MAX_SESSIONS_REACHED" CodeMissingAppContext = "MISSING_APP_CONTEXT" )
Variables ¶
var ( ErrSessionNotFound = &errs.AuthsomeError{Code: CodeSessionNotFound} ErrSessionExpired = &errs.AuthsomeError{Code: CodeSessionExpired} ErrSessionCreationFailed = &errs.AuthsomeError{Code: CodeSessionCreationFailed} ErrSessionRevocationFailed = &errs.AuthsomeError{Code: CodeSessionRevocationFailed} ErrInvalidToken = &errs.AuthsomeError{Code: CodeInvalidToken} ErrMaxSessionsReached = &errs.AuthsomeError{Code: CodeMaxSessionsReached} ErrMissingAppContext = &errs.AuthsomeError{Code: CodeMissingAppContext} )
Functions ¶
func InvalidToken ¶
func InvalidToken() *errs.AuthsomeError
func MaxSessionsReached ¶
func MaxSessionsReached(limit int) *errs.AuthsomeError
func MissingAppContext ¶
func MissingAppContext() *errs.AuthsomeError
func SessionCreationFailed ¶
func SessionCreationFailed(err error) *errs.AuthsomeError
func SessionExpired ¶
func SessionExpired() *errs.AuthsomeError
func SessionNotFound ¶
func SessionNotFound() *errs.AuthsomeError
func SessionRevocationFailed ¶
func SessionRevocationFailed(err error) *errs.AuthsomeError
Types ¶
type Config ¶
type Config struct {
DefaultTTL time.Duration
RememberTTL time.Duration
AllowMultiple bool
RequireUserAuth bool
}
Config represents session service configuration
type CreateSessionRequest ¶
type CreateSessionRequest struct {
AppID xid.ID `json:"appID"`
EnvironmentID *xid.ID `json:"environmentID,omitempty"`
OrganizationID *xid.ID `json:"organizationID,omitempty"`
UserID xid.ID `json:"userId"`
IPAddress string `json:"ipAddress"`
UserAgent string `json:"userAgent"`
Remember bool `json:"remember"`
}
CreateSessionRequest represents the data to create a session
type ListSessionsFilter ¶
type ListSessionsFilter struct {
pagination.PaginationParams
AppID xid.ID `json:"appId" query:"app_id"`
EnvironmentID *xid.ID `json:"environmentId,omitempty" query:"environment_id"`
OrganizationID *xid.ID `json:"organizationId,omitempty" query:"organization_id"`
UserID *xid.ID `json:"userId,omitempty" query:"user_id"`
Active *bool `json:"active,omitempty" query:"active"` // Filter by expired/active
}
ListSessionsFilter represents filter parameters for listing sessions
type ListSessionsResponse ¶
type ListSessionsResponse = pagination.PageResponse[*Session]
ListSessionsResponse is a type alias for paginated response
type Repository ¶
type Repository interface {
// Create/Read operations
CreateSession(ctx context.Context, s *schema.Session) error
FindSessionByID(ctx context.Context, id xid.ID) (*schema.Session, error)
FindSessionByToken(ctx context.Context, token string) (*schema.Session, error)
// List with pagination
ListSessions(ctx context.Context, filter *ListSessionsFilter) (*pagination.PageResponse[*schema.Session], error)
// Update/Delete operations
RevokeSession(ctx context.Context, token string) error
RevokeSessionByID(ctx context.Context, id xid.ID) error
// Count operations
CountSessions(ctx context.Context, appID xid.ID, userID *xid.ID) (int, error)
// Maintenance
CleanupExpiredSessions(ctx context.Context) (int, error)
}
Repository defines session persistence operations Following ISP - works with schema types
type Service ¶
type Service struct {
// contains filtered or unexported fields
}
Service provides session-related operations
func NewService ¶
func NewService(repo Repository, cfg Config, webhookSvc *webhook.Service) *Service
NewService creates a new session service
func (*Service) FindByToken ¶
FindByToken retrieves a session by token
func (*Service) ListSessions ¶
func (s *Service) ListSessions(ctx context.Context, filter *ListSessionsFilter) (*ListSessionsResponse, error)
ListSessions retrieves sessions with filtering and pagination
type ServiceInterface ¶
type ServiceInterface interface {
Create(ctx context.Context, req *CreateSessionRequest) (*Session, error)
FindByToken(ctx context.Context, token string) (*Session, error)
FindByID(ctx context.Context, id xid.ID) (*Session, error)
ListSessions(ctx context.Context, filter *ListSessionsFilter) (*ListSessionsResponse, error)
Revoke(ctx context.Context, token string) error
RevokeByID(ctx context.Context, id xid.ID) error
}
ServiceInterface defines the contract for session service operations This allows plugins to decorate the service with additional behavior
type Session ¶
Session represents a user session (DTO)
func FromSchemaSession ¶
FromSchemaSession converts schema.Session to Session DTO
func FromSchemaSessions ¶
FromSchemaSessions converts multiple schema.Session to Session DTOs