Доменная модель пользователя¶
Модуль domain.model содержит ядро бизнес-логики приложения, реализуя паттерн "Богатая модель" (Rich Domain Model). Основной класс User инкапсулирует всю логику работы с пользователями.
Особенности¶
- Четкое разделение ответственности
- Инкапсуляция бизнес-правил
- Независимость от инфраструктурного кода
- Поддержка иммутабельности где это необходимо
- Строгая типизация
Документация API¶
Класс User¶
Основная сущность, представляющая пользователя в системе.
Source code in src/domain/model.py
7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 | |
update_login_time() -> None
¶
Обновить время последнего входа.
Source code in src/domain/model.py
36 37 38 | |
Примеры использования¶
Создание пользователя¶
from uuid import uuid4
from datetime import datetime, UTC
from src.adapters.hasher import BcryptPasswordHasher
from src.domain.model import User
# Инициализация зависимостей
hasher = BcryptPasswordHasher()
# Создание нового пользователя
user = User(
user_id=uuid4(),
first_name="Иван",
last_name="Иванов",
email="ivan@example.com",
username="ivanov",
hashed_password=hasher.hash_password("secure_password"),
_hasher=hasher,
is_active=True,
created_at=datetime.now(UTC)
)
Работа с пользователем¶
# Активация/деактивация
user.activate()
user.deactivate()
# Верификация email
user.verify_email()
# Проверка пароля
if user.verify_password("my_password"):
print("Пароль верный")
# Обновление пароля
user.set_password("new_secure_password")
# Обновление времени последнего входа
user.update_login_time()
Рекомендации по использованию¶
- Создание пользователей
- Всегда используйте фабричные методы или сервисный слой
- Убедитесь, что пароль хешируется до сохранения
-
Генерируйте уникальные ID для пользователей
-
Безопасность
- Никогда не храните пароли в открытом виде
- Используйте надежные алгоритмы хеширования
-
Регулярно обновляйте учетные данные пользователей
-
Валидация
- Проверяйте email на корректность
- Валидируйте сложность пароля
-
Ограничивайте длину строковых полей
-
Тестирование
- Используйте моки для зависимостей
- Тестируйте граничные случаи
- Проверяйте бизнес-правила
Интеграция¶
Доменная модель User может быть использована с:
- Репозиториями для хранения данных
- Сервисным слоем для бизнес-логики
- API-контроллерами для обработки запросов
- Системами аутентификации и авторизации
Ограничения¶
- Требует инициализации с валидным хешером паролей
- Не содержит валидации ввода (должна выполняться на уровне приложения)
- Не зависит от фреймворков и внешних библиотек, кроме стандартной библиотеки Python