Skip to content

Roles

roles

Role adapter interface.

Defines the abstract interface for role-based access control (RBAC) operations. Handles roles, permissions, and their assignments to users.

Classes

RoleAdapter

Bases: ABC

Abstract base class for role and permission database operations.

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

Functions
create_role abstractmethod
create_role(*, name: str, description: str | None = None) -> Any

Create a new role.

Parameters:

Name Type Description Default
name str

Unique role name

required
description str | None

Optional role description

None

Returns:

Type Description
Any

Created role object

Source code in fastauth/adapters/base/roles.py
@abstractmethod
def create_role(self, *, name: str, description: str | None = None) -> Any:
    """
    Create a new role.

    Args:
        name: Unique role name
        description: Optional role description

    Returns:
        Created role object
    """
    ...
get_role_by_name abstractmethod
get_role_by_name(name: str) -> Any

Retrieve a role by name.

Parameters:

Name Type Description Default
name str

Role name

required

Returns:

Type Description
Any

Role object if found, None otherwise

Source code in fastauth/adapters/base/roles.py
@abstractmethod
def get_role_by_name(self, name: str) -> Any:
    """
    Retrieve a role by name.

    Args:
        name: Role name

    Returns:
        Role object if found, None otherwise
    """
    ...
create_permission abstractmethod
create_permission(*, name: str, description: str | None = None) -> Any

Create a new permission.

Parameters:

Name Type Description Default
name str

Unique permission name

required
description str | None

Optional permission description

None

Returns:

Type Description
Any

Created permission object

Source code in fastauth/adapters/base/roles.py
@abstractmethod
def create_permission(self, *, name: str, description: str | None = None) -> Any:
    """
    Create a new permission.

    Args:
        name: Unique permission name
        description: Optional permission description

    Returns:
        Created permission object
    """
    ...
get_permission_by_name abstractmethod
get_permission_by_name(name: str) -> Any

Retrieve a permission by name.

Parameters:

Name Type Description Default
name str

Permission name

required

Returns:

Type Description
Any

Permission object if found, None otherwise

Source code in fastauth/adapters/base/roles.py
@abstractmethod
def get_permission_by_name(self, name: str) -> Any:
    """
    Retrieve a permission by name.

    Args:
        name: Permission name

    Returns:
        Permission object if found, None otherwise
    """
    ...
assign_role_to_user abstractmethod
assign_role_to_user(*, user_id: UUID, role_id: UUID) -> None

Assign a role to a user.

Parameters:

Name Type Description Default
user_id UUID

User's unique identifier

required
role_id UUID

Role's unique identifier

required
Source code in fastauth/adapters/base/roles.py
@abstractmethod
def assign_role_to_user(self, *, user_id: uuid.UUID, role_id: uuid.UUID) -> None:
    """
    Assign a role to a user.

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

Remove a role from a user.

Parameters:

Name Type Description Default
user_id UUID

User's unique identifier

required
role_id UUID

Role's unique identifier

required
Source code in fastauth/adapters/base/roles.py
@abstractmethod
def remove_role_from_user(self, *, user_id: uuid.UUID, role_id: uuid.UUID) -> None:
    """
    Remove a role from a user.

    Args:
        user_id: User's unique identifier
        role_id: Role's unique identifier
    """
    ...
get_user_roles abstractmethod
get_user_roles(user_id: UUID) -> list[Any]

Get all roles assigned to a user.

Parameters:

Name Type Description Default
user_id UUID

User's unique identifier

required

Returns:

Type Description
list[Any]

List of role objects

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

    Args:
        user_id: User's unique identifier

    Returns:
        List of role objects
    """
    ...
assign_permission_to_role abstractmethod
assign_permission_to_role(*, role_id: UUID, permission_id: UUID) -> None

Assign a permission to a role.

Parameters:

Name Type Description Default
role_id UUID

Role's unique identifier

required
permission_id UUID

Permission's unique identifier

required
Source code in fastauth/adapters/base/roles.py
@abstractmethod
def assign_permission_to_role(
    self, *, role_id: uuid.UUID, permission_id: uuid.UUID
) -> None:
    """
    Assign a permission to a role.

    Args:
        role_id: Role's unique identifier
        permission_id: Permission's unique identifier
    """
    ...
get_role_permissions abstractmethod
get_role_permissions(role_id: UUID) -> list[Any]

Get all permissions assigned to a role.

Parameters:

Name Type Description Default
role_id UUID

Role's unique identifier

required

Returns:

Type Description
list[Any]

List of permission objects

Source code in fastauth/adapters/base/roles.py
@abstractmethod
def get_role_permissions(self, role_id: uuid.UUID) -> list[Any]:
    """
    Get all permissions assigned to a role.

    Args:
        role_id: Role's unique identifier

    Returns:
        List of permission objects
    """
    ...
get_user_permissions abstractmethod
get_user_permissions(user_id: UUID) -> list[Any]

Get all permissions for a user (from all their roles).

Parameters:

Name Type Description Default
user_id UUID

User's unique identifier

required

Returns:

Type Description
list[Any]

List of permission objects

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

    Args:
        user_id: User's unique identifier

    Returns:
        List of permission objects
    """
    ...