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:
3
myproject/.gitignore
vendored
3
myproject/.gitignore
vendored
@@ -11,6 +11,9 @@ db.sqlite3-journal
|
||||
.env
|
||||
docker/.env.docker
|
||||
|
||||
# Support credentials (generated passwords)
|
||||
support_credentials.txt
|
||||
|
||||
# Virtual environment
|
||||
venv/
|
||||
env/
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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):
|
||||
"""Инициализация системных данных тенанта."""
|
||||
|
||||
Reference in New Issue
Block a user