Skip to content

Sessions

sessions

Session adapter interface.

Defines the abstract interface for user session management. Handles session creation, retrieval, deletion, and cleanup.

Classes

SessionAdapter

Bases: ABC

Abstract base class for user session database operations.

Implementations must provide database-specific logic for session management. Sessions track user login state across multiple devices.

Functions
create_session abstractmethod
create_session(
    *,
    user_id: UUID,
    device: str | None = None,
    ip_address: str | None = None,
    user_agent: str | None = None
) -> Any

Create a new user session.

Parameters:

Name Type Description Default
user_id UUID

User's unique identifier

required
device str | None

Optional device name/description

None
ip_address str | None

Client IP address

None
user_agent str | None

Browser/client user agent string

None

Returns:

Type Description
Any

Created session object

Source code in fastauth/adapters/base/sessions.py
@abstractmethod
def create_session(
    self,
    *,
    user_id: uuid.UUID,
    device: str | None = None,
    ip_address: str | None = None,
    user_agent: str | None = None,
) -> Any:
    """
    Create a new user session.

    Args:
        user_id: User's unique identifier
        device: Optional device name/description
        ip_address: Client IP address
        user_agent: Browser/client user agent string

    Returns:
        Created session object
    """
    ...
get_session_by_id abstractmethod
get_session_by_id(session_id: UUID) -> Any

Retrieve a session by its ID.

Parameters:

Name Type Description Default
session_id UUID

Session's unique identifier

required

Returns:

Type Description
Any

Session object if found, None otherwise

Source code in fastauth/adapters/base/sessions.py
@abstractmethod
def get_session_by_id(self, session_id: uuid.UUID) -> Any:
    """
    Retrieve a session by its ID.

    Args:
        session_id: Session's unique identifier

    Returns:
        Session object if found, None otherwise
    """
    ...
get_user_sessions abstractmethod
get_user_sessions(user_id: UUID) -> list[Any]

Get all sessions for a user.

Parameters:

Name Type Description Default
user_id UUID

User's unique identifier

required

Returns:

Type Description
list[Any]

List of session objects

Source code in fastauth/adapters/base/sessions.py
@abstractmethod
def get_user_sessions(self, user_id: uuid.UUID) -> list[Any]:
    """
    Get all sessions for a user.

    Args:
        user_id: User's unique identifier

    Returns:
        List of session objects
    """
    ...
delete_session abstractmethod
delete_session(session_id: UUID) -> None

Delete a specific session.

Parameters:

Name Type Description Default
session_id UUID

Session's unique identifier

required
Source code in fastauth/adapters/base/sessions.py
@abstractmethod
def delete_session(self, session_id: uuid.UUID) -> None:
    """
    Delete a specific session.

    Args:
        session_id: Session's unique identifier
    """
    ...
delete_user_sessions abstractmethod
delete_user_sessions(
    *, user_id: UUID, except_session_id: UUID | None = None
) -> None

Delete all sessions for a user, optionally keeping one.

Parameters:

Name Type Description Default
user_id UUID

User's unique identifier

required
except_session_id UUID | None

Optional session ID to preserve

None
Source code in fastauth/adapters/base/sessions.py
@abstractmethod
def delete_user_sessions(
    self, *, user_id: uuid.UUID, except_session_id: uuid.UUID | None = None
) -> None:
    """
    Delete all sessions for a user, optionally keeping one.

    Args:
        user_id: User's unique identifier
        except_session_id: Optional session ID to preserve
    """
    ...
update_last_active abstractmethod
update_last_active(session_id: UUID) -> None

Update the last active timestamp for a session.

Parameters:

Name Type Description Default
session_id UUID

Session's unique identifier

required
Source code in fastauth/adapters/base/sessions.py
@abstractmethod
def update_last_active(self, session_id: uuid.UUID) -> None:
    """
    Update the last active timestamp for a session.

    Args:
        session_id: Session's unique identifier
    """
    ...
cleanup_inactive_sessions abstractmethod
cleanup_inactive_sessions(inactive_days: int = 30) -> None

Remove sessions that have been inactive for too long.

Parameters:

Name Type Description Default
inactive_days int

Number of days of inactivity before cleanup

30
Source code in fastauth/adapters/base/sessions.py
@abstractmethod
def cleanup_inactive_sessions(self, inactive_days: int = 30) -> None:
    """
    Remove sessions that have been inactive for too long.

    Args:
        inactive_days: Number of days of inactivity before cleanup
    """
    ...