Skip to content

Users

users

User adapter interface.

Defines the abstract interface for user account database operations. Handles user creation, retrieval, authentication, and account management.

Classes

UserAdapter

Bases: ABC

Abstract base class for user database operations.

Implementations must provide database-specific logic for user management. The core business logic remains database-agnostic.

Functions
get_by_email abstractmethod
get_by_email(email: str) -> Any

Retrieve a user by email address.

Parameters:

Name Type Description Default
email str

User's email address

required

Returns:

Type Description
Any

User object if found, None otherwise

Source code in fastauth/adapters/base/users.py
@abstractmethod
def get_by_email(self, email: str) -> Any:
    """
    Retrieve a user by email address.

    Args:
        email: User's email address

    Returns:
        User object if found, None otherwise
    """
    ...
get_by_id abstractmethod
get_by_id(user_id: UUID) -> Any

Retrieve a user by ID.

Parameters:

Name Type Description Default
user_id UUID

User's unique identifier

required

Returns:

Type Description
Any

User object if found, None otherwise

Source code in fastauth/adapters/base/users.py
@abstractmethod
def get_by_id(self, user_id: uuid.UUID) -> Any:
    """
    Retrieve a user by ID.

    Args:
        user_id: User's unique identifier

    Returns:
        User object if found, None otherwise
    """
    ...
create_user abstractmethod
create_user(*, email: str, hashed_password: str | None = None) -> Any

Create a new user.

Parameters:

Name Type Description Default
email str

User's email address

required
hashed_password str | None

Already hashed password (None for OAuth-only users)

None

Returns:

Type Description
Any

Created user object

Source code in fastauth/adapters/base/users.py
@abstractmethod
def create_user(self, *, email: str, hashed_password: str | None = None) -> Any:
    """
    Create a new user.

    Args:
        email: User's email address
        hashed_password: Already hashed password (None for OAuth-only users)

    Returns:
        Created user object
    """
    ...
mark_verified abstractmethod
mark_verified(user_id: UUID) -> None

Mark a user's email as verified.

Parameters:

Name Type Description Default
user_id UUID

User's unique identifier

required
Source code in fastauth/adapters/base/users.py
@abstractmethod
def mark_verified(self, user_id: uuid.UUID) -> None:
    """
    Mark a user's email as verified.

    Args:
        user_id: User's unique identifier
    """
    ...
set_password abstractmethod
set_password(*, user_id: UUID, hashed_password: str) -> None

Update user's password.

Parameters:

Name Type Description Default
user_id UUID

User's unique identifier

required
hashed_password str

Already hashed password

required
Source code in fastauth/adapters/base/users.py
@abstractmethod
def set_password(self, *, user_id: uuid.UUID, hashed_password: str) -> None:
    """
    Update user's password.

    Args:
        user_id: User's unique identifier
        hashed_password: Already hashed password
    """
    ...
update_last_login abstractmethod
update_last_login(user_id: UUID) -> None

Update user's last login timestamp.

Parameters:

Name Type Description Default
user_id UUID

User's unique identifier

required
Source code in fastauth/adapters/base/users.py
@abstractmethod
def update_last_login(self, user_id: uuid.UUID) -> None:
    """
    Update user's last login timestamp.

    Args:
        user_id: User's unique identifier
    """
    ...
update_email abstractmethod
update_email(*, user_id: UUID, new_email: str) -> None

Update user's email address.

Parameters:

Name Type Description Default
user_id UUID

User's unique identifier

required
new_email str

New email address

required
Source code in fastauth/adapters/base/users.py
@abstractmethod
def update_email(self, *, user_id: uuid.UUID, new_email: str) -> None:
    """
    Update user's email address.

    Args:
        user_id: User's unique identifier
        new_email: New email address
    """
    ...
soft_delete_user abstractmethod
soft_delete_user(*, user_id: UUID) -> None

Soft delete a user by setting deleted_at timestamp.

Parameters:

Name Type Description Default
user_id UUID

User's unique identifier

required
Source code in fastauth/adapters/base/users.py
@abstractmethod
def soft_delete_user(self, *, user_id: uuid.UUID) -> None:
    """
    Soft delete a user by setting deleted_at timestamp.

    Args:
        user_id: User's unique identifier
    """
    ...
hard_delete_user abstractmethod
hard_delete_user(*, user_id: UUID) -> None

Permanently delete a user from the database.

Parameters:

Name Type Description Default
user_id UUID

User's unique identifier

required
Source code in fastauth/adapters/base/users.py
@abstractmethod
def hard_delete_user(self, *, user_id: uuid.UUID) -> None:
    """
    Permanently delete a user from the database.

    Args:
        user_id: User's unique identifier
    """
    ...