feat(auth): согласие на обработку персональных данных при регистрации
Отключаемый модуль (instance_settings.consent_policy): галочка + ссылка на публичную страницу регламента на форме регистрации, редактируемый в админке текст с типовым шаблоном по умолчанию (плейсхолдеры под организацию, не проходил юридическую проверку), версия текста растёт при каждой правке. Факт согласия хранится в users (consent_version, consent_given_at) — второй эшелон проверки на сервере, как и для отключаемых модулей ранее. Дефолт (выключено) сохраняет поведение существующих инсталляций, у уже зарегистрированных пользователей согласие не запрашивается.
This commit is contained in:
@@ -1,6 +1,7 @@
|
||||
"""Репозиторий доступа к таблице `users`."""
|
||||
|
||||
import uuid
|
||||
from datetime import datetime
|
||||
|
||||
from sqlalchemy import or_, select
|
||||
from sqlalchemy.ext.asyncio import AsyncSession
|
||||
@@ -30,9 +31,24 @@ class UserRepository:
|
||||
name_user: str,
|
||||
password_hash: str,
|
||||
team_id: uuid.UUID | None = None,
|
||||
consent_version: int | None = None,
|
||||
consent_given_at: datetime | None = None,
|
||||
) -> User:
|
||||
"""Создать нового пользователя (role='user', email_verified=False по умолчанию)."""
|
||||
user = User(email=email, name_user=name_user, password_hash=password_hash, team_id=team_id)
|
||||
"""Создать нового пользователя (role='user', email_verified=False по умолчанию).
|
||||
|
||||
`consent_version`/`consent_given_at` — редакция регламента обработки
|
||||
персональных данных, с которой согласился пользователь, и время
|
||||
согласия; `None` у обоих, если согласие не запрашивалось (модуль
|
||||
выключен) — см. `services.auth.AuthService.register`.
|
||||
"""
|
||||
user = User(
|
||||
email=email,
|
||||
name_user=name_user,
|
||||
password_hash=password_hash,
|
||||
team_id=team_id,
|
||||
consent_version=consent_version,
|
||||
consent_given_at=consent_given_at,
|
||||
)
|
||||
self._session.add(user)
|
||||
await self._session.flush()
|
||||
return user
|
||||
|
||||
Reference in New Issue
Block a user