|
2 | 2 | import hmac |
3 | 3 | import logging |
4 | 4 | from typing import Any |
5 | | -from urllib.parse import quote, unquote |
| 5 | +from urllib.parse import unquote |
6 | 6 |
|
7 | 7 | import jwt |
8 | 8 | from event_schema.auth import UserLogin |
9 | 9 | from fastapi import Depends |
10 | 10 | from fastapi.background import BackgroundTasks |
11 | 11 | from fastapi_sqlalchemy import db |
12 | | -from pydantic import BaseModel, Field |
| 12 | +from pydantic import BaseModel |
13 | 13 |
|
14 | 14 | from auth_backend.auth_method import AuthPluginMeta, OauthMeta, Session |
15 | 15 | from auth_backend.exceptions import AlreadyExists, OauthAuthFailed |
|
26 | 26 |
|
27 | 27 | class TelegramSettings(Settings): |
28 | 28 | TELEGRAM_REDIRECT_URL: str = "https://app.test.profcomff.com/auth" |
29 | | - TELEGRAM_BOT_TOKEN: str |
| 29 | + TELEGRAM_BOT_TOKEN: str = None |
30 | 30 |
|
31 | 31 |
|
32 | 32 | class TelegramAuth(OauthMeta): |
33 | 33 | """Вход в приложение 'Твой ФФ' через Telegram Login Widget.""" |
| 34 | + |
34 | 35 | prefix = '/telegram' |
35 | 36 | tags = ['Telegram'] |
36 | 37 | settings = TelegramSettings() |
@@ -87,7 +88,7 @@ async def _register( |
87 | 88 | db_session=db.session, |
88 | 89 | session_name=user_inp.session_name, |
89 | 90 | ) |
90 | | - |
| 91 | + |
91 | 92 | @classmethod |
92 | 93 | async def _login(cls, user_inp: TGAuthResponseSchema, background_tasks: BackgroundTasks) -> Session: |
93 | 94 | """Вход в пользователя с помощью аккаунта ТГ. |
@@ -124,19 +125,19 @@ async def _login(cls, user_inp: TGAuthResponseSchema, background_tasks: Backgrou |
124 | 125 | @classmethod |
125 | 126 | async def _redirect_url(cls): |
126 | 127 | """URL на который происходит редирект после завершения входа на стороне провайдера. |
127 | | - |
| 128 | +
|
128 | 129 | В данном случае не предполагается к использованию, т.к. данный URL вшит в виджет. |
129 | 130 | """ |
130 | 131 | return OauthMeta.UrlSchema(url=cls.settings.TELEGRAM_REDIRECT_URL) |
131 | | - |
| 132 | + |
132 | 133 | @classmethod |
133 | 134 | async def _auth_url(cls): |
134 | 135 | """URL на который происходит редирект из приложения, чтобы авторизоваться на стороне провайдера. |
135 | | - |
| 136 | +
|
136 | 137 | В данном случае не предполагается, т.к. URL вшит в виджет. Отдается атрибут src виджета. |
137 | 138 | """ |
138 | 139 | return OauthMeta.UrlSchema(url='https://telegram.org/js/telegram-widget.js?22') |
139 | | - |
| 140 | + |
140 | 141 | @classmethod |
141 | 142 | async def _check(cls, user_inp): |
142 | 143 | """Проверка данных пользователя. |
@@ -164,7 +165,7 @@ async def _check(cls, user_inp): |
164 | 165 | return data_check |
165 | 166 | else: |
166 | 167 | raise OauthAuthFailed('Invalid user data from Telegram', 'Неправильные учетные данные') |
167 | | - |
| 168 | + |
168 | 169 | @classmethod |
169 | 170 | async def _convert_data_to_userdata_format(cls, data: dict[str, Any]) -> UserLogin: |
170 | 171 | """Конвертация данных в формат для userdata-api.""" |
|
0 commit comments