From a3224cb63ac1361bc73605b446bd9756a4f31b27 Mon Sep 17 00:00:00 2001 From: gglamer Date: Tue, 29 Sep 2026 12:18:17 +0000 Subject: [PATCH] =?UTF-8?q?feat:=20=D1=83=D1=87=D1=91=D1=82=D0=BA=D0=B8=20?= =?UTF-8?q?=D1=81=D1=82=D0=B5=D0=BD=D0=B4=D0=B0=20=D0=B7=D0=B0=D0=B2=D0=BE?= =?UTF-8?q?=D0=B4=D1=8F=D1=82=D1=81=D1=8F=20=D0=BF=D1=80=D0=B8=20=D1=81?= =?UTF-8?q?=D1=82=D0=B0=D1=80=D1=82=D0=B5,=20=D0=BF=D0=B0=D1=80=D0=BE?= =?UTF-8?q?=D0=BB=D1=8C=20=D1=81=D0=BE=D0=B2=D0=BF=D0=B0=D0=B4=D0=B0=D0=B5?= =?UTF-8?q?=D1=82=20=D1=81=20=D0=BB=D0=BE=D0=B3=D0=B8=D0=BD=D0=BE=D0=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Makefile | 4 ++-- backend/scripts/users.py | 13 ++++++------- docker-compose.yml | 2 +- scripts/demo.sh | 2 +- 4 files changed, 10 insertions(+), 11 deletions(-) diff --git a/Makefile b/Makefile index 86bcc9a..312f6e9 100644 --- a/Makefile +++ b/Makefile @@ -90,10 +90,10 @@ local-stt: ## Запустить локальный whisper.cpp server на loca backup: ## Резервная копия базы в backend/backups/ (для cron: раз в сутки) cd backend && $(UV) run python scripts/backup.py -users: ## Завести учётные записи ролей и напечатать пароли: make users force=1 +users: ## Завести учётные записи ролей, пароль = логин: make users force=1 — сбросить cd backend && $(UV) run python scripts/users.py -users-docker: ## Завести учётные записи внутри локального контейнера (после make offline) +users-docker: ## То же внутри контейнера; compose и так заводит их при старте backend $(COMPOSE) exec backend python scripts/users.py seed: ## Залить сценарии из /scenarios в БД diff --git a/backend/scripts/users.py b/backend/scripts/users.py index f255b37..d5094a0 100644 --- a/backend/scripts/users.py +++ b/backend/scripts/users.py @@ -2,10 +2,11 @@ Без входа система не работает (lct-23), а заводить первого администратора руками в базе — плохой первый шаг для того, кто разворачивает стенд. -Скрипт создаёт по одной записи на роль и печатает пароли один раз. +Скрипт создаёт по одной записи на роль; compose запускает его при каждом +старте backend, существующие записи он не трогает. -Пароли случайные: зашитый в репозиторий «admin/admin» переживёт сдачу -и уедет в реальный класс. +Пароль совпадает с логином: стенд учебный, его поднимают на показе и в классе, +и учётки должны быть известны заранее, без поиска строки в логе контейнера. make users создать недостающие make users force=1 пересоздать пароли существующих @@ -13,7 +14,6 @@ import asyncio import os -import secrets import sys from pathlib import Path @@ -45,7 +45,7 @@ async def main() -> int: print(f" {login}: уже есть") continue - password = secrets.token_urlsafe(9) + password = login if user is None: user = User(login=login, full_name=full_name, role=role.value, service=service) db.add(user) @@ -67,10 +67,9 @@ async def main() -> int: print("все учётные записи на месте (пересоздать: make users force=1)") return 0 - print("\nЗаписано. Пароли показываются один раз:\n") + print("\nЗаписано, пароль совпадает с логином:\n") for login, password in created: print(f" {login:10} {password}") - print("\nСменить пароль можно только пересозданием: экран смены пароля — lct-24.") return 0 diff --git a/docker-compose.yml b/docker-compose.yml index 1117ba2..2125be8 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -44,7 +44,7 @@ services: fi; export SESSION_SECRET="$$(cat /run/lct/session-secret)"; fi; - alembic upgrade head && python scripts/seed.py && + alembic upgrade head && python scripts/seed.py && python scripts/users.py && uvicorn app.main:app --host 0.0.0.0 --port 8000 --workers 1' environment: DATABASE_URL: postgresql+asyncpg://lct:${POSTGRES_PASSWORD:-lct}@postgres:5432/lct diff --git a/scripts/demo.sh b/scripts/demo.sh index 77b2b6b..dc5fb76 100755 --- a/scripts/demo.sh +++ b/scripts/demo.sh @@ -67,7 +67,7 @@ FRONTEND=$! say "Стенд поднят" cat <<'LINKS' - вход: http://localhost:5173/ (пароли печатает make users) + вход: http://localhost:5173/ (admin / teacher / trainee, пароль = логин) пульт преподавателя: http://localhost:5173/instructor профили курсантов: http://localhost:5173/profile ссылки на АРМ курсанта, монитор и ДДС печатает сам пульт