domain.enums.user_role¶
src.domain.enums.user_role
¶
User roles for RBAC authorization.
This enum defines the role hierarchy for the authorization system. Roles are used with Casbin RBAC to determine user permissions.
Role Hierarchy
admin > user > readonly
- admin: Full system access (inherits user + management capabilities)
- user: Standard user (inherits readonly + write capabilities)
- readonly: Read-only access to own resources
Reference
- docs/architecture/authorization-architecture.md
Usage
from src.domain.enums import UserRole
Check role¶
if user.role == UserRole.ADMIN: # Admin-only logic
Assign role via authorization service¶
await authz.assign_role(user_id, UserRole.USER)
Classes¶
UserRole
¶
Bases: str, Enum
User roles for RBAC authorization.
Defines the role hierarchy used by Casbin for permission checks. Each role inherits permissions from roles below it in hierarchy.
Hierarchy
ADMIN inherits from USER inherits from READONLY
String Enum
Inherits from str for easy serialization and Casbin compatibility. Values are lowercase to match Casbin policy format.
Source code in src/domain/enums/user_role.py
Attributes¶
ADMIN
class-attribute
instance-attribute
¶
Administrator role with full system access.
Capabilities
- All USER permissions
- User management (create, deactivate, role assignment)
- System configuration
- Security settings (token rotation, etc.)
USER
class-attribute
instance-attribute
¶
Standard user role with read/write access to own resources.
Capabilities
- All READONLY permissions
- Create/modify own accounts
- Create/modify own provider connections
- Manage own sessions
READONLY
class-attribute
instance-attribute
¶
Read-only role with view access to own resources.
Capabilities
- View own accounts
- View own transactions
- View own provider connections
- View own sessions
Use Cases
- Shared access (family member viewing)
- Audit/compliance viewing
- Temporary restricted access
Functions¶
values
classmethod
¶
Get all role values as strings.
Returns:
| Type | Description |
|---|---|
list[str]
|
list[str]: List of role values ['admin', 'user', 'readonly']. |
is_valid
classmethod
¶
Check if a string is a valid role.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
value
|
str
|
String to check. |
required |
Returns:
| Name | Type | Description |
|---|---|---|
bool |
bool
|
True if value is a valid role. |