Добавлена форма изменения ника при регистрации аккаунта на случай, когда уже существует аакунт с ником, совпадающим с ТГ тегом регистрируемого аккаунта
This commit is contained in:
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user