Authorization
The UContact REST API implements role-based access control (RBAC) to manage user permissions and access to resources.
User Roles
The system supports the following roles:
Administrator
Role: admin
- Permissions:
View own contacts
View system statistics and metrics
Modify their avatar and settings
Access admin-only endpoints
Manage user roles
Regular User
Role: user
- Permissions:
Manage own contacts (CRUD operations)
Update own profile information(except avatar)
View own contacts
Search and filter own contacts
Access birthday notifications
- Restrictions:
Cannot update avatar
Cannot modify system settings
Cannot access admin endpoints
Role Assignment
Roles are assigned through the following methods:
1. Default Role
New users are automatically assigned the user role upon registration.
2. Admin Assignment
Administrators can modify user avatar and role.
Permission Checking
The API implements permission checking using role-specific decorators:
@router.get("/protected/admin/route")
async def protected_admin_route(
user: User = Depends(get_current_admin_user),
):
# Only admins can access this endpoint
pass
Error Responses
When attempting to access unauthorized resources:
HTTP/1.1 403 Forbidden
Content-Type: application/json
{
"detail": "Not authorized to perform this action"
}
Future Enhancements
Planned role-based features:
1. Custom Roles
Create custom roles with specific permissions
Fine-grained access control
Role hierarchies
2. Role Groups
Group users by department or team
Shared access to contacts within groups
Group-specific permissions
3. Temporary Permissions
Time-limited role assignments
Temporary access elevation
Permission delegation