Skip to content

Sessions

sessions

Session management core logic.

Provides business logic for user session management including creation, retrieval, and deletion of sessions.

Classes

SessionNotFoundError

Bases: Exception

Raised when a session is not found.

Functions

create_session

create_session(
    *,
    sessions: SessionAdapter,
    users: UserAdapter,
    user_id: UUID,
    device: str | None = None,
    ip_address: str | None = None,
    user_agent: str | None = None
) -> Any

Create a new session for a user.

Parameters:

Name Type Description Default
sessions SessionAdapter

Session adapter for database operations

required
users UserAdapter

User adapter for database operations

required
user_id UUID

User's unique identifier

required
device str | None

Device information

None
ip_address str | None

IP address of the client

None
user_agent str | None

User agent string

None

Returns:

Type Description
Any

Created session object

Source code in fastauth/core/sessions.py
def create_session(
    *,
    sessions: SessionAdapter,
    users: UserAdapter,
    user_id: uuid.UUID,
    device: str | None = None,
    ip_address: str | None = None,
    user_agent: str | None = None,
) -> Any:
    """
    Create a new session for a user.

    Args:
        sessions: Session adapter for database operations
        users: User adapter for database operations
        user_id: User's unique identifier
        device: Device information
        ip_address: IP address of the client
        user_agent: User agent string

    Returns:
        Created session object
    """
    session = sessions.create_session(
        user_id=user_id,
        device=device,
        ip_address=ip_address,
        user_agent=user_agent,
    )

    users.update_last_login(user_id=user_id)

    return session

get_user_sessions

get_user_sessions(*, sessions: SessionAdapter, user_id: UUID) -> List[Any]

Get all active sessions for a user.

Parameters:

Name Type Description Default
sessions SessionAdapter

Session adapter for database operations

required
user_id UUID

User's unique identifier

required

Returns:

Type Description
List[Any]

List of session objects

Source code in fastauth/core/sessions.py
def get_user_sessions(
    *,
    sessions: SessionAdapter,
    user_id: uuid.UUID,
) -> List[Any]:
    """
    Get all active sessions for a user.

    Args:
        sessions: Session adapter for database operations
        user_id: User's unique identifier

    Returns:
        List of session objects
    """
    return sessions.get_user_sessions(user_id)

delete_session

delete_session(
    *, sessions: SessionAdapter, session_id: UUID, user_id: UUID
) -> None

Delete a specific session.

Parameters:

Name Type Description Default
sessions SessionAdapter

Session adapter for database operations

required
session_id UUID

Session's unique identifier

required
user_id UUID

User's unique identifier (for authorization)

required

Raises:

Type Description
SessionNotFoundError

If session doesn't exist or doesn't belong to user

Source code in fastauth/core/sessions.py
def delete_session(
    *,
    sessions: SessionAdapter,
    session_id: uuid.UUID,
    user_id: uuid.UUID,
) -> None:
    """
    Delete a specific session.

    Args:
        sessions: Session adapter for database operations
        session_id: Session's unique identifier
        user_id: User's unique identifier (for authorization)

    Raises:
        SessionNotFoundError: If session doesn't exist or doesn't belong to user
    """
    session = sessions.get_session_by_id(session_id)

    if not session or session.user_id != user_id:
        raise SessionNotFoundError("Session not found")

    sessions.delete_session(session_id)

delete_all_user_sessions

delete_all_user_sessions(
    *,
    sessions: SessionAdapter,
    user_id: UUID,
    except_session_id: UUID | None = None
) -> None

Delete all sessions for a user, optionally excluding the current session.

Parameters:

Name Type Description Default
sessions SessionAdapter

Session adapter for database operations

required
user_id UUID

User's unique identifier

required
except_session_id UUID | None

Optional session ID to keep (current session)

None
Source code in fastauth/core/sessions.py
def delete_all_user_sessions(
    *,
    sessions: SessionAdapter,
    user_id: uuid.UUID,
    except_session_id: uuid.UUID | None = None,
) -> None:
    """
    Delete all sessions for a user, optionally excluding the current session.

    Args:
        sessions: Session adapter for database operations
        user_id: User's unique identifier
        except_session_id: Optional session ID to keep (current session)
    """
    sessions.delete_user_sessions(
        user_id=user_id,
        except_session_id=except_session_id,
    )

update_session_activity

update_session_activity(*, sessions: SessionAdapter, session_id: UUID) -> None

Update the last active timestamp for a session.

Parameters:

Name Type Description Default
sessions SessionAdapter

Session adapter for database operations

required
session_id UUID

Session's unique identifier

required
Source code in fastauth/core/sessions.py
def update_session_activity(
    *,
    sessions: SessionAdapter,
    session_id: uuid.UUID,
) -> None:
    """
    Update the last active timestamp for a session.

    Args:
        sessions: Session adapter for database operations
        session_id: Session's unique identifier
    """
    sessions.update_last_active(session_id)

cleanup_inactive_sessions

cleanup_inactive_sessions(
    *, sessions: SessionAdapter, inactive_days: int = 30
) -> None

Remove sessions that haven't been active for a specified number of days.

Parameters:

Name Type Description Default
sessions SessionAdapter

Session adapter for database operations

required
inactive_days int

Number of days of inactivity before cleanup (default: 30)

30
Source code in fastauth/core/sessions.py
def cleanup_inactive_sessions(
    *,
    sessions: SessionAdapter,
    inactive_days: int = 30,
) -> None:
    """
    Remove sessions that haven't been active for a specified number of days.

    Args:
        sessions: Session adapter for database operations
        inactive_days: Number of days of inactivity before cleanup (default: 30)
    """
    sessions.cleanup_inactive_sessions(inactive_days)