feat: Добавлен флаг is_superuser для platform_support и сохранение credentials в файл

- Platform support пользователь теперь создается с is_superuser=True для полного доступа
- Добавлено сохранение credentials (домен:логин:пароль) в support_credentials.txt
- Добавлен support_credentials.txt в .gitignore для безопасности
- Обновлена документация развертывания на NAS

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
This commit is contained in:
2026-01-09 00:02:10 +03:00
parent 741db3a792
commit 0bddbc08c4
3 changed files with 38 additions and 2 deletions

View File

@@ -11,6 +11,9 @@ db.sqlite3-journal
.env
docker/.env.docker
# Support credentials (generated passwords)
support_credentials.txt
# Virtual environment
venv/
env/

View File

@@ -41,6 +41,7 @@ chown -R 1000:1000 /Volume1/DockerAppsData/mixapp/app
chown -R 1000:1000 /Volume1/DockerAppsData/mixapp/media
chown -R 1000:1000 /Volume1/DockerAppsData/mixapp/static
chmod -R u+rwX /Volume1/DockerAppsData/mixapp
chown -R 1000:1000 /Volume1/DockerYAML/mix
```
## Шаг 2: Копирование файлов проекта на NAS
@@ -78,10 +79,9 @@ nano .env.docker
# Django settings
SECRET_KEY=ваш-очень-длинный-секретный-ключ-минимум-50-символов
DEBUG=False
ALLOWED_HOSTS=mix.smaa.by,*.mix.smaa.by,localhost,127.0.0.1
ALLOWED_HOSTS=*
CSRF_TRUSTED_ORIGINS=https://mix.smaa.by,https://*.mix.smaa.by
DOMAIN_NAME=mix.smaa.by
# Database (PostgreSQL)
DB_NAME=inventory_db
DB_USER=postgres

View File

@@ -279,6 +279,7 @@ class TenantOnboardingService:
support_user.is_email_confirmed = True
support_user.email_confirmed_at = timezone.now()
support_user.is_active = True
support_user.is_superuser = True
support_user.save()
# Назначаем роль platform_support
@@ -290,6 +291,38 @@ class TenantOnboardingService:
f"Email: {support_email} | Пароль: {password}"
)
# Сохраняем credentials в файл
cls._save_support_credentials(registration, support_email, password)
@classmethod
def _save_support_credentials(cls, registration: TenantRegistration, email: str, password: str):
"""
Сохраняет credentials техподдержки в файл.
Формат: домен:логин:пароль
Файл: support_credentials.txt в корне проекта
"""
import os
from pathlib import Path
# Корень проекта (где manage.py)
project_root = Path(settings.BASE_DIR)
credentials_file = project_root / 'support_credentials.txt'
# Формируем домен тенанта
domain_base = settings.TENANT_DOMAIN_BASE
if ':' in domain_base:
domain_base = domain_base.split(':')[0]
tenant_domain = f"{registration.schema_name}.{domain_base}"
# Добавляем строку в файл
try:
with open(credentials_file, 'a', encoding='utf-8') as f:
f.write(f"{tenant_domain}:{email}:{password}\n")
logger.info(f"Credentials сохранены в {credentials_file}")
except Exception as e:
logger.error(f"Ошибка сохранения credentials: {e}")
@classmethod
def _init_tenant_data(cls):
"""Инициализация системных данных тенанта."""