3.4 KiB
3.4 KiB
storage.json_storage
class storage.json_storage.JsonStorage(file_path: str = '/etc/gonets/users.json')
Bases: object
Хранилище пользователей в JSON-файле.
- Назначение:
- Обеспечивает простое файловое хранилище для учетных записей пользователей без полноценной СУБД. Подходит для встраиваемых окружений и сценариев, где важна минимальная зависимость от внешних сервисов.
- Формат данных:
- JSON‑структура вида:
{
- “users”: [
- {“id”: int, “username”: str, “password_hash”: str, “is_admin”: bool},
…
], “next_id”: int
}
- Безопасность:
- Пароли никогда не сохраняются в открытом виде. Для хеширования используется passlib.context.CryptContext со схемой bcrypt. Файл создаётся с правами доступа 0o600 (только владелец).
- Ограничения и замечания:
- Отсутствует конкурентный доступ/блокировки файла — при использовании в многопроцессной среде может потребоваться внешняя синхронизация.
- Имя файла и каталог по умолчанию /etc/gonets/users.json предполагают наличие прав на запись и предварительную подготовку окружения.
create_user(user: UserCreate) → UserResponse
Создаёт нового пользователя с хешированием пароля.
- Parameters: user (UserCreate) – Объект с данными нового пользователя (username, password, is_admin).
- Returns: Объект с данными созданного пользователя (id, username, is_admin).
- Return type: UserResponse
- Raises:
- ValueError – Если пользователь с таким именем уже существует.
- Exception – Если произошла ошибка при записи данных.
get_user_by_username(username: str) → dict | None
Получает данные пользователя по имени.
- Parameters: username (str) – Имя пользователя для поиска.
- Returns: Словарь с данными пользователя или None, если пользователь не найден.
- Return type: Optional[dict]
- Raises: Exception – Если произошла ошибка при чтении файла.
verify_password(plain_password: str, hashed_password: str) → bool
Проверяет соответствие введённого пароля хэшированному.
- Parameters:
- plain_password (str) – Введённый пользователем пароль.
- hashed_password (str) – Хэшированный пароль из хранилища.
- Returns: True, если пароль верен, False в противном случае.
- Return type: bool