28222d634d
- Add role field to UserProfile (superadmin/admin/trainer) - Add role-based permission classes - Create UserManagementViewSet with CRUD and password change - Add API types and components for user management - Create users management page in settings - Only superadmins can manage users
26 lines
932 B
Python
26 lines
932 B
Python
from rest_framework import permissions
|
|
|
|
class IsSuperAdmin(permissions.BasePermission):
|
|
def has_permission(self, request, view):
|
|
return (
|
|
request.user.is_authenticated and
|
|
hasattr(request.user, 'profile') and
|
|
request.user.profile.role == 'superadmin'
|
|
)
|
|
|
|
class IsAdminOrSuperAdmin(permissions.BasePermission):
|
|
def has_permission(self, request, view):
|
|
if not request.user.is_authenticated:
|
|
return False
|
|
if not hasattr(request.user, 'profile'):
|
|
return False
|
|
return request.user.profile.role in ['admin', 'superadmin']
|
|
|
|
class HasUserManagementAccess(permissions.BasePermission):
|
|
def has_permission(self, request, view):
|
|
if not request.user.is_authenticated:
|
|
return False
|
|
if not hasattr(request.user, 'profile'):
|
|
return False
|
|
return request.user.profile.role == 'superadmin'
|