Repair docs (html, md). Update docstrings

This commit is contained in:
parent e264750187
commit 6a4ad48577
125 changed files with 3706 additions and 4913 deletions

View file

@ -8,16 +8,21 @@ from models.auth import UserCreate, UserResponse
logging.basicConfig(level=logging.INFO)
logger = logging.getLogger(__name__)
DATA_DIR = os.getenv("GONETS_DATA_DIR", "/etc/gonets")
DEFAULT_USERS_PATH = os.getenv("GONETS_USERS_PATH",
os.path.join(DATA_DIR, "users.json"))
class JsonStorage:
"""Хранилище пользователей в JSON-файле.
Назначение:
Обеспечивает простое файловое хранилище для учетных записей пользователей
без полноценной СУБД. Подходит для встраиваемых окружений и сценариев,
где важна минимальная зависимость от внешних сервисов.
Формат данных:
JSON-структура вида:
- Обеспечивает простое файловое хранилище учетных записей без полноценной СУБД.
- Подходит для встраиваемых окружений, где критична минимальная зависимость от внешних сервисов.
Формат данных::
{
"users": [
{"id": int, "username": str, "password_hash": str, "is_admin": bool},
@ -27,18 +32,17 @@ class JsonStorage:
}
Безопасность:
Пароли никогда не сохраняются в открытом виде. Для хеширования используется
`passlib.context.CryptContext` со схемой `bcrypt`. Файл создаётся с правами
доступа `0o600` (только владелец).
Ограничения и замечания:
- Отсутствует конкурентный доступ/блокировки файла — при использовании в
многопроцессной среде может потребоваться внешняя синхронизация.
- Имя файла и каталог по умолчанию `/etc/gonets/users.json` предполагают
наличие прав на запись и предварительную подготовку окружения.
- Пароли никогда не сохраняются в открытом виде: используется `passlib.context.CryptContext` со схемой `bcrypt`.
- Файл создаётся с правами доступа ``0o600`` (чтение/запись только владельцу).
Ограничения:
- Нет блокировок для конкурентного доступа — в многопроцессной среде требуется внешняя синхронизация.
- Значение пути по умолчанию ``/etc/gonets/users.json`` предполагает наличие прав на запись и предварительную настройку окружения.
"""
def __init__(self, file_path: str = "/etc/gonets/users.json"):
def __init__(self, file_path: Optional[str] = None):
"""Инициализирует хранилище пользователей.
Args:
@ -48,7 +52,7 @@ class JsonStorage:
Создаёт объект CryptContext для хеширования паролей и проверяет/создаёт
файл, если он отсутствует.
"""
self.file_path = file_path
self.file_path = file_path or DEFAULT_USERS_PATH
self.pwd_context = CryptContext(schemes=["bcrypt"], deprecated="auto")
self._ensure_file_exists()
@ -203,4 +207,4 @@ class JsonStorage:
Returns:
bool: True, если пароль верен, False в противном случае.
"""
return self.pwd_context.verify(plain_password, hashed_password)
return self.pwd_context.verify(plain_password, hashed_password)