feat: учётки стенда заводятся при старте, пароль совпадает с логином
This commit is contained in:
parent
7f8501696e
commit
a3224cb63a
4 changed files with 10 additions and 11 deletions
4
Makefile
4
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 в БД
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
ссылки на АРМ курсанта, монитор и ДДС печатает сам пульт
|
||||
|
|
|
|||
Loading…
Reference in a new issue