Добавлена форма изменения ника при регистрации аккаунта на случай, когда уже существует аакунт с ником, совпадающим с ТГ тегом регистрируемого аккаунта

This commit is contained in:
2026-06-17 16:17:14 +03:00
parent 65bebf8b85
commit 865c967d5e
10 changed files with 409 additions and 28 deletions
+13 -5
View File
@@ -15,22 +15,30 @@ from app.models import User
from app.services import audit_service, user_service
def login_with_identity(
session: Session, response: Response, request: Request, identity: ExternalIdentity
def establish_session(
session: Session, response: Response, request: Request, user: User, provider: str
) -> User:
user = user_service.get_or_create_from_identity(session, identity)
"""Открыть сессию уже найденному/созданному пользователю (cookie + аудит)."""
if not user.is_active:
raise ForbiddenError("Аккаунт отключён администратором.", code="ACCOUNT_DISABLED")
security.set_user_session(response, user.id, identity.provider) # type: ignore[arg-type]
security.set_user_session(response, user.id, provider) # type: ignore[arg-type]
audit_service.record(
session,
actor_id=user.id,
action="login",
entity_type="user",
entity_id=user.id,
payload={"provider": identity.provider},
payload={"provider": provider},
ip=request.client.host if request.client else None,
user_agent=request.headers.get("user-agent"),
)
session.commit()
return user
def login_with_identity(
session: Session, response: Response, request: Request, identity: ExternalIdentity
) -> User:
"""Вход с авто-созданием (dev-вход по нику): ник подбирается автоматически."""
user = user_service.get_or_create_from_identity(session, identity)
return establish_session(session, response, request, user, identity.provider)