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: раз в сутки)
|
backup: ## Резервная копия базы в backend/backups/ (для cron: раз в сутки)
|
||||||
cd backend && $(UV) run python scripts/backup.py
|
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
|
cd backend && $(UV) run python scripts/users.py
|
||||||
|
|
||||||
users-docker: ## Завести учётные записи внутри локального контейнера (после make offline)
|
users-docker: ## То же внутри контейнера; compose и так заводит их при старте backend
|
||||||
$(COMPOSE) exec backend python scripts/users.py
|
$(COMPOSE) exec backend python scripts/users.py
|
||||||
|
|
||||||
seed: ## Залить сценарии из /scenarios в БД
|
seed: ## Залить сценарии из /scenarios в БД
|
||||||
|
|
|
||||||
|
|
@ -2,10 +2,11 @@
|
||||||
|
|
||||||
Без входа система не работает (lct-23), а заводить первого администратора
|
Без входа система не работает (lct-23), а заводить первого администратора
|
||||||
руками в базе — плохой первый шаг для того, кто разворачивает стенд.
|
руками в базе — плохой первый шаг для того, кто разворачивает стенд.
|
||||||
Скрипт создаёт по одной записи на роль и печатает пароли один раз.
|
Скрипт создаёт по одной записи на роль; compose запускает его при каждом
|
||||||
|
старте backend, существующие записи он не трогает.
|
||||||
|
|
||||||
Пароли случайные: зашитый в репозиторий «admin/admin» переживёт сдачу
|
Пароль совпадает с логином: стенд учебный, его поднимают на показе и в классе,
|
||||||
и уедет в реальный класс.
|
и учётки должны быть известны заранее, без поиска строки в логе контейнера.
|
||||||
|
|
||||||
make users создать недостающие
|
make users создать недостающие
|
||||||
make users force=1 пересоздать пароли существующих
|
make users force=1 пересоздать пароли существующих
|
||||||
|
|
@ -13,7 +14,6 @@
|
||||||
|
|
||||||
import asyncio
|
import asyncio
|
||||||
import os
|
import os
|
||||||
import secrets
|
|
||||||
import sys
|
import sys
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
|
|
||||||
|
|
@ -45,7 +45,7 @@ async def main() -> int:
|
||||||
print(f" {login}: уже есть")
|
print(f" {login}: уже есть")
|
||||||
continue
|
continue
|
||||||
|
|
||||||
password = secrets.token_urlsafe(9)
|
password = login
|
||||||
if user is None:
|
if user is None:
|
||||||
user = User(login=login, full_name=full_name, role=role.value, service=service)
|
user = User(login=login, full_name=full_name, role=role.value, service=service)
|
||||||
db.add(user)
|
db.add(user)
|
||||||
|
|
@ -67,10 +67,9 @@ async def main() -> int:
|
||||||
print("все учётные записи на месте (пересоздать: make users force=1)")
|
print("все учётные записи на месте (пересоздать: make users force=1)")
|
||||||
return 0
|
return 0
|
||||||
|
|
||||||
print("\nЗаписано. Пароли показываются один раз:\n")
|
print("\nЗаписано, пароль совпадает с логином:\n")
|
||||||
for login, password in created:
|
for login, password in created:
|
||||||
print(f" {login:10} {password}")
|
print(f" {login:10} {password}")
|
||||||
print("\nСменить пароль можно только пересозданием: экран смены пароля — lct-24.")
|
|
||||||
return 0
|
return 0
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -44,7 +44,7 @@ services:
|
||||||
fi;
|
fi;
|
||||||
export SESSION_SECRET="$$(cat /run/lct/session-secret)";
|
export SESSION_SECRET="$$(cat /run/lct/session-secret)";
|
||||||
fi;
|
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'
|
uvicorn app.main:app --host 0.0.0.0 --port 8000 --workers 1'
|
||||||
environment:
|
environment:
|
||||||
DATABASE_URL: postgresql+asyncpg://lct:${POSTGRES_PASSWORD:-lct}@postgres:5432/lct
|
DATABASE_URL: postgresql+asyncpg://lct:${POSTGRES_PASSWORD:-lct}@postgres:5432/lct
|
||||||
|
|
|
||||||
|
|
@ -67,7 +67,7 @@ FRONTEND=$!
|
||||||
|
|
||||||
say "Стенд поднят"
|
say "Стенд поднят"
|
||||||
cat <<'LINKS'
|
cat <<'LINKS'
|
||||||
вход: http://localhost:5173/ (пароли печатает make users)
|
вход: http://localhost:5173/ (admin / teacher / trainee, пароль = логин)
|
||||||
пульт преподавателя: http://localhost:5173/instructor
|
пульт преподавателя: http://localhost:5173/instructor
|
||||||
профили курсантов: http://localhost:5173/profile
|
профили курсантов: http://localhost:5173/profile
|
||||||
ссылки на АРМ курсанта, монитор и ДДС печатает сам пульт
|
ссылки на АРМ курсанта, монитор и ДДС печатает сам пульт
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue