|
1 | 1 | import logging |
2 | 2 | from abc import abstractmethod |
3 | 3 |
|
| 4 | +from event_schema.auth import UserInfo, UserLogin, UserLoginKey |
4 | 5 | from fastapi import Depends |
| 6 | +from fastapi.background import BackgroundTasks |
5 | 7 | from fastapi_sqlalchemy import db |
6 | 8 | from sqlalchemy.orm import Session as DbSession |
7 | 9 |
|
8 | 10 | from auth_backend.auth_method import AUTH_METHODS, LoginableMixin |
9 | 11 | from auth_backend.base import Base |
10 | 12 | from auth_backend.exceptions import LastAuthMethodDelete |
| 13 | +from auth_backend.kafka.kafka import get_kafka_producer |
11 | 14 | from auth_backend.models.db import AuthMethod, User, UserSession |
12 | 15 | from auth_backend.utils.security import UnionAuth |
13 | 16 |
|
@@ -44,13 +47,23 @@ async def _auth_url(*args, **kwargs) -> UrlSchema: |
44 | 47 | raise NotImplementedError() |
45 | 48 |
|
46 | 49 | @classmethod |
47 | | - async def _unregister(cls, user_session: UserSession = Depends(UnionAuth(scopes=[], auto_error=True))): |
| 50 | + async def _unregister( |
| 51 | + cls, |
| 52 | + background_tasks: BackgroundTasks, |
| 53 | + user_session: UserSession = Depends(UnionAuth(scopes=[], auto_error=True)), |
| 54 | + ): |
48 | 55 | """Отключает для пользователя метод входа""" |
49 | 56 | old_user = {"user_id": user_session.user.id} |
50 | 57 | new_user = {"user_id": user_session.user.id} |
51 | 58 | old_user_params = await cls._delete_auth_methods(user_session.user, db_session=db.session) |
52 | 59 | old_user[cls.get_name()] = old_user_params |
53 | 60 | await AuthPluginMeta.user_updated(new_user, old_user) |
| 61 | + background_tasks.add_task( |
| 62 | + get_kafka_producer().produce, |
| 63 | + cls.settings.KAFKA_USER_LOGIN_TOPIC_NAME, |
| 64 | + UserLoginKey(user_id=user_session.user.id), |
| 65 | + UserLogin(source=cls.get_name(), items=[UserInfo(category="Контакты", param="", value=None)]), |
| 66 | + ) |
54 | 67 | return None |
55 | 68 |
|
56 | 69 | @classmethod |
|
0 commit comments