feat: add user roles management UI with owner access control

- Added role management views (list, create, edit, delete)
- Created user_roles URL routing
- Added role management templates with Bootstrap styling
- Updated navbar with Roles link for owners and superusers
- Enhanced decorators and mixins with superuser bypass
- Added assign_owner_role.py utility script

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
2025-12-01 21:24:27 +03:00
parent 9f48ae0a35
commit 14cc73722f
11 changed files with 479 additions and 2 deletions

View File

@@ -18,6 +18,10 @@ class RoleBasedAdminMixin:
if not super().has_module_permission(request):
return False
# Superuser имеет полный доступ
if request.user.is_superuser:
return True
if not self.required_roles:
return True # Нет ограничений
@@ -28,6 +32,10 @@ class RoleBasedAdminMixin:
if not super().has_view_permission(request, obj):
return False
# Superuser имеет полный доступ
if request.user.is_superuser:
return True
if not self.required_roles:
return True
@@ -38,6 +46,10 @@ class RoleBasedAdminMixin:
if not super().has_add_permission(request):
return False
# Superuser имеет полный доступ
if request.user.is_superuser:
return True
if not self.required_roles:
return True
@@ -48,6 +60,10 @@ class RoleBasedAdminMixin:
if not super().has_change_permission(request, obj):
return False
# Superuser имеет полный доступ
if request.user.is_superuser:
return True
if not self.required_roles:
return True
@@ -58,6 +74,10 @@ class RoleBasedAdminMixin:
if not super().has_delete_permission(request, obj):
return False
# Superuser имеет полный доступ
if request.user.is_superuser:
return True
if not self.required_roles:
return True