session

package
v0.0.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Nov 20, 2025 License: Apache-2.0 Imports: 12 Imported by: 0

Documentation

Index

Constants

View Source
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

View Source
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) Create

func (s *Service) Create(ctx context.Context, req *CreateSessionRequest) (*Session, error)

Create creates a new session for a user

func (*Service) FindByID

func (s *Service) FindByID(ctx context.Context, id xid.ID) (*Session, error)

FindByID retrieves a session by ID

func (*Service) FindByToken

func (s *Service) FindByToken(ctx context.Context, token string) (*Session, error)

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

func (*Service) Revoke

func (s *Service) Revoke(ctx context.Context, token string) error

Revoke revokes a session by token

func (*Service) RevokeByID

func (s *Service) RevokeByID(ctx context.Context, id xid.ID) error

RevokeByID revokes a session by ID

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

type Session = base.Session

Session represents a user session (DTO)

func FromSchemaSession

func FromSchemaSession(s *schema.Session) *Session

FromSchemaSession converts schema.Session to Session DTO

func FromSchemaSessions

func FromSchemaSessions(sessions []*schema.Session) []*Session

FromSchemaSessions converts multiple schema.Session to Session DTOs

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL