Reminder/bot/auth/auth.py
2024-10-24 22:19:30 +03:00

43 lines
1.9 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import aiohttp # Для выполнения HTTP-запросов
from loguru import logger
from database.db_main import User, session
from datetime import datetime
from .crypto import decrypt_password
# Функция для отправки POST-запроса к API и получения токена
async def get_token_from_api(email, password):
url = "https://api.otask.ru/api/v1/auth/login"
headers = {
"Content-Type": "application/json",
"Accept": "application/json"
}
body = {
"email": email,
"password": password
}
async with aiohttp.ClientSession() as session:
async with session.post(url, headers=headers, json=body) as response:
if response.status == 200:
return await response.json() # Возвращаем токен, если запрос успешен
else:
logger.error(f"Failed to get token. Status code: {response.status}")
return None
# Функция для обновления токена
async def update_token(user: User):
# Выполняем запрос на обновление токена
new_tokens = await get_token_from_api(user.name, decrypt_password(user.password)) # Получаем новый токен
if new_tokens:
user.token = new_tokens['token']
user.refresh_token = new_tokens['refresh_token']
user.expires_in = new_tokens['expires_in'] # Если у вас есть это поле в модели
user.last_token_update = datetime.now() # Обновляем дату последнего обновления токена
session.commit()
logger.info(f"Токен обновлён для пользователя: {user.telegram_id}")
else:
logger.warning(f"Не удалось обновить токен для пользователя: {user.telegram_id}")