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

48
assign_owner_role.py Normal file
View File

@@ -0,0 +1,48 @@
import os
import sys
import django
# Добавляем путь к проекту
sys.path.insert(0, os.path.join(os.path.dirname(__file__), 'myproject'))
# Настраиваем Django
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'myproject.settings')
django.setup()
from django.contrib.auth import get_user_model
from django_tenants.utils import schema_context
from user_roles.services import RoleService
User = get_user_model()
# Схема тенанта
schema_name = 'buba'
# Email пользователя
user_email = 'admin@localhost'
print(f"Назначение роли Owner для пользователя {user_email} в тенанте {schema_name}...")
# Переключаемся на схему тенанта
with schema_context(schema_name):
try:
# Находим пользователя
user = User.objects.get(email=user_email)
print(f"Пользователь найден: {user.email} (ID: {user.id})")
# Назначаем роль Owner
user_role = RoleService.assign_role_to_user(user, 'owner')
print(f"✓ Роль '{user_role.role.name}' успешно назначена!")
print(f" - Email: {user_role.user.email}")
print(f" - Имя: {user_role.user.name}")
print(f" - Роль: {user_role.role.name} ({user_role.role.code})")
print(f" - Активен: {user_role.is_active}")
except User.DoesNotExist:
print(f"✗ Ошибка: Пользователь с email '{user_email}' не найден")
except Exception as e:
print(f"✗ Ошибка при назначении роли: {e}")
import traceback
traceback.print_exc()
print("\nГотово!")