Покрытие кода docstrings
This commit is contained in:
parent
4e92aba2a2
commit
8f48df2cf5
19 changed files with 2324 additions and 1839 deletions
|
|
@ -11,8 +11,31 @@ logger = logging.getLogger(__name__)
|
|||
class JsonStorage:
|
||||
"""Хранилище пользователей в JSON-файле.
|
||||
|
||||
Предоставляет методы для создания, чтения и проверки данных пользователей,
|
||||
используя шифрование паролей с помощью bcrypt.
|
||||
Назначение:
|
||||
Обеспечивает простое файловое хранилище для учетных записей пользователей
|
||||
без полноценной СУБД. Подходит для встраиваемых окружений и сценариев,
|
||||
где важна минимальная зависимость от внешних сервисов.
|
||||
|
||||
Формат данных:
|
||||
JSON‑структура вида:
|
||||
{
|
||||
"users": [
|
||||
{"id": int, "username": str, "password_hash": str, "is_admin": bool},
|
||||
...
|
||||
],
|
||||
"next_id": int
|
||||
}
|
||||
|
||||
Безопасность:
|
||||
Пароли никогда не сохраняются в открытом виде. Для хеширования используется
|
||||
`passlib.context.CryptContext` со схемой `bcrypt`. Файл создаётся с правами
|
||||
доступа `0o600` (только владелец).
|
||||
|
||||
Ограничения и замечания:
|
||||
- Отсутствует конкурентный доступ/блокировки файла — при использовании в
|
||||
многопроцессной среде может потребоваться внешняя синхронизация.
|
||||
- Имя файла и каталог по умолчанию `/etc/gonets/users.json` предполагают
|
||||
наличие прав на запись и предварительную подготовку окружения.
|
||||
"""
|
||||
|
||||
def __init__(self, file_path: str = "/etc/gonets/users.json"):
|
||||
|
|
|
|||
|
|
@ -11,8 +11,33 @@ logger = logging.getLogger(__name__)
|
|||
class SessionStorage:
|
||||
"""Хранилище сессий пользователей в JSON-файле.
|
||||
|
||||
Предоставляет методы для создания, получения, удаления и очистки сессий с
|
||||
учётом срока действия.
|
||||
Назначение:
|
||||
Лёгкое файловое хранилище для сессионных токенов, сопоставленных с
|
||||
`client_id` (например, IP клиента). Предназначено для сред без БД и
|
||||
persistent‑кэшей. Обеспечивает базовые операции и авто‑очистку протухших
|
||||
сессий.
|
||||
|
||||
Формат данных:
|
||||
{
|
||||
"sessions": {
|
||||
"<session_id>": {
|
||||
"username": str,
|
||||
"token": str,
|
||||
"client_id": str,
|
||||
"created_at": ISO8601 str,
|
||||
"expiry": ISO8601 str
|
||||
},
|
||||
...
|
||||
}
|
||||
}
|
||||
|
||||
Политика TTL:
|
||||
Каждая сессия действует 30 минут. При создании/чтении/удалении вызывается
|
||||
`clean_expired_sessions()` для удаления протухших записей.
|
||||
|
||||
Ограничения:
|
||||
- Нет файловых блокировок: в многопроцессных конфигурациях возможны гонки.
|
||||
- Размещение по умолчанию `/etc/gonets/sessions.json` требует прав на запись.
|
||||
"""
|
||||
|
||||
def __init__(self, file_path: str = "/etc/gonets/sessions.json"):
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue