Рефакторинг: убрана зависимость от Django Groups/Permissions для CustomUser

- CustomUser теперь наследуется от AbstractBaseUser (вместо AbstractUser)
- Удалены поля groups и user_permissions из CustomUser
- Все authentication backends (TenantUserBackend, PlatformAdminBackend, RoleBasedPermissionBackend) больше НЕ наследуются от ModelBackend
- Добавлены методы has_perm() и has_module_perms() в CustomUser для делегирования проверки прав кастомным backends
- Полная изоляция: CustomUser использует только систему ролей (UserRole), PlatformAdmin использует только is_superuser
- Удалён весь старый код, связанный с Django permissions
- Нет обратной совместимости (не требуется)
- Чистая архитектура для multi-tenant приложения
This commit is contained in:
2026-01-10 00:10:25 +03:00
parent d90b0162c5
commit b63162b1cb
5 changed files with 162 additions and 43 deletions

View File

@@ -7,15 +7,18 @@ Authentication backend для CustomUser (пользователей тенан
ВАЖНО: CustomUser теперь в TENANT_APPS - каждый тенант имеет свою таблицу!
Backend работает с таблицей accounts_customuser в текущей tenant schema.
ВАЖНО: НЕ наследуется от ModelBackend! Полностью независимая реализация.
"""
from django.contrib.auth.backends import ModelBackend
from django.db import connection
class TenantUserBackend(ModelBackend):
class TenantUserBackend:
"""
Backend аутентификации для CustomUser (tenant-only).
НЕ наследуется от ModelBackend! Полностью независимая реализация.
Особенности:
- Работает ТОЛЬКО на tenant доменах (не на public)
- Ищет пользователя в таблице accounts_customuser текущей tenant schema