feat: аккаунты по почте с подтверждением, сбросом пароля и синхронизацией прогресса
API аккаунтов на чистой стандартной библиотеке Python (server/splitapi): - регистрация по почте: пароль задаётся по ссылке из письма, аккаунт создаётся только после подтверждения - вход, выход, сброс пароля по почте (токены одноразовые, в базе только SHA-256), удаление аккаунта - пароли scrypt, лимиты попыток по паре «адрес + IP», IP и аккаунту, защита от CSRF - хранение прогресса пользователя с оптимистичной блокировкой версии - SMTP через переменные окружения; без SMTP на публичном адресе API не стартует Клиент: public/auth.js (вход, регистрация, сброс, синхронизация), public/sync.js (чистое слияние прогресса). Без API сайт работает как раньше. Развёртывание: Dockerfile.api, сервис splitapi в docker-compose, проксирование /api/ в nginx с ограничением частоты, deploy/install-api-debian.sh (systemd), .env.example. Тесты: 216 для бэкенда (unittest, покрытие около 97%), 16 для клиентского слияния. Документация: раздел «Аккаунты и почта» в docs/DEPLOY.md, раздел 9 в docs/ИНСТРУКЦИЯ.md.
This commit is contained in:
+13
-1
@@ -108,6 +108,18 @@
|
||||
| Прогресс пропал | Он хранится в браузере: проверьте, тем ли браузером и тем же файлом вы пользуетесь |
|
||||
| Нужно всё обнулить | «Статистика» → «Сбросить все данные» |
|
||||
|
||||
## 9. Файлы приложения
|
||||
## 9. Аккаунт и синхронизация (если сайт установлен на сервере с API)
|
||||
|
||||
Пункт **«Войти»** в меню появляется только на сервере, где установлен API. Без входа всё работает как раньше: прогресс хранится в этом браузере.
|
||||
|
||||
- **Регистрация.** Введите только почту. Придёт письмо со ссылкой (действует сутки): по ней вы подтверждаете адрес и придумываете пароль, и только после этого создаётся аккаунт. Если письма нет, загляните в «Спам» и проверьте адрес.
|
||||
- **Вход.** Почта и пароль. Прогресс с устройства объединяется с тем, что уже лежит на сервере, и после каждого упражнения отправляется туда. На другом устройстве достаточно войти, и всё на месте.
|
||||
- **Забыли пароль.** «Забыли пароль?» → письмо со ссылкой (действует час, работает один раз) → новый пароль. Все прежние входы на устройствах завершатся.
|
||||
- **Выход.** Прогресс остаётся на устройстве. Если потом в этом же браузере войдёт другой человек, ваши локальные данные в его аккаунт **не** попадут: они будут очищены.
|
||||
- **Сброс данных.** «Статистика» → «Сбросить все данные» при входе очищает и копию на сервере. На других устройствах локальные данные при следующей синхронизации вернутся: очистите их и там.
|
||||
- **Удаление аккаунта.** «Аккаунт» → «Удалить аккаунт…» (нужен пароль): удаляются аккаунт и прогресс на сервере.
|
||||
- **Что синхронизируется.** Прогресс по урокам, история упражнений и статистика клавиш. Настройки и раскладка Vial остаются на устройстве.
|
||||
|
||||
## 10. Файлы приложения
|
||||
|
||||
В папке `public/`: `index.html` (запуск), `app.js` (логика), `vial.js` (чтение Vial и маршруты по слоям), `data.js` (раскладки, слова и тексты упражнений), `styles.css` (оформление). Слова и предложения для упражнений можно править в `data.js`. Установка на сервер описана в `docs/DEPLOY.md`.
|
||||
|
||||
Reference in New Issue
Block a user