web_users v0.3.0 [core]


Учётные записи и сессии веб-панели (/api/auth/*, /api/me).

versiondatecommitфайлов
0.3.02026-09-178f2c08bfb8d99

README

# web_users

Учётные записи и сессии веб-панели (/api/auth/*, /api/me).

Тип: Модуль. Категория: `core`. Зависимостей нет.

## Описание

Паспортный стол кабинета: пользователи с логином и паролем (пароли через хеши), вход ставит cookie-сессию `websess`, неудачные логины тормозятся rate-limit'ом.

В правах два независимых неймспейса — `telegram:ID` (люди из бота) и `web:UID` (аккаунты кабинета). Право `all` покрывает всё, кроме ключей из ignore-списка.

Кабинет прав: единая таблица людей из TG и веба, тоглы прав, удаление пользователей (вместе с сессиями, правами и API-токенами).

## Возможности

- `create {username: str, password: str}` → создать пользователя (валидация логина/пароля)
- `verify {username: str, password: str}` → проверить логин/пароль
- `session {token: str}` → cookie-сессия по токену (скользящее продление)
- `session_ttl {}` → TTL сессии в секундах (для продления куки транспортом)
- `drop_session {token: str}` → удалить cookie-сессию (logout)
- `rights_of {uid: int}` → эффективные права пользователя с учётом all/ignore
- `right_catalog {}` → каталог всех прав (для редактора)
- `right_meta {}` → откуда каждое право (модуль/ядро/наследие)
- `all_ignore {}` → ключи, не покрываемые all (для скоупов токенов)
- `delete {uid: int}` → удалить пользователя
- `list {}` → все пользователи (для селектов и подписей)

## Права

- `manage_rights` — Редактор прав веб-панели (/api/admin/users*, /api/admin/rights)

## Web

- `POST /api/auth/register` — регистрация (если открыта)
- `POST /api/auth/login` — вход, ставит cookie
- `POST /api/auth/logout` — выход
- `GET /api/me` — кто я и мои права
- `GET /api/admin/users` — все пользователи с правами
- `POST /api/admin/users/delete` — удалить пользователя
- `POST /api/admin/rights` — тогл права

## Конфигурация (`config.schema.json`)

- Опциональные: `WEB_SESSION_TTL_HOURS` = `168`, `WEB_OPEN_REGISTRATION` = `1`, `WEB_USERS_FILE` = ``, `WEB_SESSIONS_FILE` = ``

Манифест

{
  "name": "web_users",
  "version": "0.3.0",
  "category": "core",
  "description": "Учётные записи и сессии веб-панели (/api/auth/*, /api/me).",
  "requires": [],
  "rights": [],
  "api_methods": [],
  "web_routes": [],
  "commit": "8f2c08bfb8d9078b81e8e4a8add7931f4dd535b9",
  "updated": "2026-09-17 14:22:43 +0300",
  "integrity": "sha256:9d020f53e9d9d087465688304531b112673bcf5d5fe578c6e302b5fd5820a01a",
  "files": "[9 файлов — см. вкладки ниже]",
  "note": "",
  "wdesc": "",
  "wbody": "",
  "_extra": {
    "api": "",
    "events_emitted": "[]",
    "events_subscribed": "[]",
    "audit_allow": "",
    "shared_routes": "",
    "config_schema": "config.schema.json",
    "env_example": ".env.example"
  }
}

Файлы и исходники

Дерево файлов

  • · корень
    • 2.8 КБ
    • 0.7 КБ
    • 0.2 КБ
    • 10.3 КБ
    • 3.0 КБ
    • 4.0 КБ
    • 11.4 КБ
  • web/
    • 2.2 КБ
    • 11.2 КБ

Предпросмотр

Выберите файл в дереве выше — код откроется здесь.