add msg for blocked account

This commit is contained in:
unknown 2025-09-26 03:58:04 +03:00
parent 0f13849b23
commit 81df14d6ae
3 changed files with 55 additions and 28 deletions

View File

@ -2,6 +2,7 @@ import httpx
import asyncio import asyncio
from app.core import config from app.core import config
from app.core.database import add_session from app.core.database import add_session
from app.core.localizer import localizer
async def login(login, password): async def login(login, password):
""" """
@ -26,29 +27,28 @@ async def login(login, password):
access_token=token_data["access_token"], access_token=token_data["access_token"],
refresh_token=token_data["refresh_token"] refresh_token=token_data["refresh_token"]
) )
return True, "Успешный вход" return True, localizer.translate("Успешный вход")
else: else:
return False, data.get("detail", "Неизвестная ошибка ответа") return False, data.get("detail", localizer.translate("Неизвестная ошибка ответа"))
elif response.status_code in [401, 403]: elif response.status_code in [401]:
error_data = response.json() error_data = response.json()
return False, error_data.get("detail", "Неверный логин или пароль") return False, error_data.get("detail", localizer.translate("Неверный логин или пароль"))
elif response.status_code in [403]:
error_data = response.json()
return False, error_data.get("detail", localizer.translate("Учетная запись пользователя отключена"))
elif response.status_code == 422: elif response.status_code == 422:
# Ошибка валидации Pydantic return False, localizer.translate("Некорректные данные для входа")
error_data = response.json()
# Можно будет позже реализовать более детальный разбор ошибок
return False, error_data.get("detail", "Некорректные данные для входа")
else: else:
return False, f"Ошибка сервера: {response.status_code}" return False, f"{localizer.translate('Ошибка сервера')}: {response.status_code}"
except httpx.RequestError as e: except httpx.RequestError as e:
# Ошибка сети, таймаут и т.д. return False, f"{localizer.translate('Ошибка сети')}: {e}"
return False, f"Ошибка сети: {e}"
except Exception as e: except Exception as e:
# Другие непредвиденные ошибки return False, f"{localizer.translate('Произошла ошибка')}: {e}"
return False, f"Произошла ошибка: {e}"
async def register(login, password, invite=None): async def register(login, password, invite=None):
""" """
@ -69,27 +69,26 @@ async def register(login, password, invite=None):
response = await client.post(url, json=payload) response = await client.post(url, json=payload)
if response.status_code == 201: if response.status_code == 201:
return True, "Регистрация прошла успешно!" return True, localizer.translate("Регистрация прошла успешно!")
# Обрабатываем специфичные ошибки
error_data = response.json() error_data = response.json()
error_message = error_data.get("detail", "Произошла неизвестная ошибка") error_message = error_data.get("detail", localizer.translate("Произошла ошибка"))
if response.status_code == 409: # Конфликт (логин занят) if response.status_code == 409:
return False, "Этот логин уже занят." return False, localizer.translate("Этот логин уже занят.")
elif response.status_code == 400: # Неверный инвайт elif response.status_code == 400:
return False, "Неверный инвайт-код." return False, localizer.translate("Неверный инвайт-код.")
elif response.status_code == 403: # Регистрация отключена elif response.status_code == 403:
return False, "Регистрация в данный момент отключена." return False, localizer.translate("Регистрация в данный момент отключена.")
elif response.status_code == 422: # Ошибка валидации elif response.status_code == 422:
return False, "Данные не прошли валидацию. Проверьте длину логина и пароля." return False, localizer.translate("Данные не прошли валидацию. Проверьте длину логина и пароля.")
else: else:
return False, f"Ошибка сервера ({response.status_code}): {error_message}" return False, f"{localizer.translate('Ошибка сервера')} ({response.status_code}): {error_message}"
except httpx.RequestError as e: except httpx.RequestError as e:
return False, f"Ошибка сети: {e}" return False, f"{localizer.translate('Ошибка сети')}: {e}"
except Exception as e: except Exception as e:
return False, f"Произошла ошибка: {e}" return False, f"{localizer.translate('Произошла ошибка')}: {e}"
# Пример использования (для тестирования) # Пример использования (для тестирования)

View File

@ -7,15 +7,29 @@
"Повторите пароль": "Repeat password", "Повторите пароль": "Repeat password",
"Инвайт-код": "Invite code", "Инвайт-код": "Invite code",
"Войти": "Login", "Войти": "Login",
"Вход...": "Logging in...",
"Зарегистрироваться": "Sign up", "Зарегистрироваться": "Sign up",
"Регистрация...": "Signing up...",
"Уже есть аккаунт? Войти": "Already have an account? Log in", "Уже есть аккаунт? Войти": "Already have an account? Log in",
"Нет аккаунта? Регистрация": "Don't have an account? Sign up", "Нет аккаунта? Регистрация": "Don't have an account? Sign up",
"Ошибка": "Error", "Ошибка": "Error",
"Успех": "Success",
"Пожалуйста, исправьте ошибки в форме": "Please correct the form errors", "Пожалуйста, исправьте ошибки в форме": "Please correct the form errors",
"Неверный логин или пароль": "Incorrect username or password", "Неверный логин или пароль": "Incorrect username or password",
"Учетная запись пользователя отключена": "User account is disabled",
"Пароли не совпадают": "Passwords do not match", "Пароли не совпадают": "Passwords do not match",
"Регистрация прошла успешно для": "Successfully registered for", "Регистрация прошла успешно для": "Successfully registered for",
"Неизвестная ошибка ответа": "Unknown response error",
"Некорректные данные для входа": "Invalid login credentials",
"Ошибка сервера": "Server error",
"Ошибка сети": "Network error",
"Произошла ошибка": "An error has occurred",
"Этот логин уже занят.": "This username is already taken.",
"Неверный инвайт-код.": "Invalid invite code.",
"Регистрация в данный момент отключена.": "Registration is currently disabled.",
"Данные не прошли валидацию. Проверьте длину логина и пароля.": "Data validation failed. Check username and password length.",
"Login must be between 3 and 32 characters long": "Login must be between 3 and 32 characters long", "Login must be between 3 and 32 characters long": "Login must be between 3 and 32 characters long",
"Login must not contain whitespace characters": "Login must not contain whitespace characters", "Login must not contain whitespace characters": "Login must not contain whitespace characters",
"Login must not start with an underscore": "Login must not start with an underscore", "Login must not start with an underscore": "Login must not start with an underscore",

View File

@ -7,15 +7,29 @@
"Повторите пароль": "Повторите пароль", "Повторите пароль": "Повторите пароль",
"Инвайт-код": "Инвайт-код", "Инвайт-код": "Инвайт-код",
"Войти": "Войти", "Войти": "Войти",
"Вход...": "Вход...",
"Зарегистрироваться": "Зарегистрироваться", "Зарегистрироваться": "Зарегистрироваться",
"Регистрация...": "Регистрация...",
"Уже есть аккаунт? Войти": "Уже есть аккаунт? Войти", "Уже есть аккаунт? Войти": "Уже есть аккаунт? Войти",
"Нет аккаунта? Регистрация": "Нет аккаунта? Регистрация", "Нет аккаунта? Регистрация": "Нет аккаунта? Регистрация",
"Ошибка": "Ошибка", "Ошибка": "Ошибка",
"Успех": "Успех",
"Пожалуйста, исправьте ошибки в форме": "Пожалуйста, исправьте ошибки в форме", "Пожалуйста, исправьте ошибки в форме": "Пожалуйста, исправьте ошибки в форме",
"Неверный логин или пароль": "Неверный логин или пароль", "Неверный логин или пароль": "Неверный логин или пароль",
"Учетная запись пользователя отключена": "Учетная запись пользователя отключена",
"Пароли не совпадают": "Пароли не совпадают", "Пароли не совпадают": "Пароли не совпадают",
"Регистрация прошла успешно для": "Регистрация прошла успешно для", "Регистрация прошла успешно для": "Регистрация прошла успешно для",
"Неизвестная ошибка ответа": "Неизвестная ошибка ответа",
"Некорректные данные для входа": "Некорректные данные для входа",
"Ошибка сервера": "Ошибка сервера",
"Ошибка сети": "Ошибка сети",
"Произошла ошибка": "Произошла ошибка",
"Этот логин уже занят.": "Этот логин уже занят.",
"Неверный инвайт-код.": "Неверный инвайт-код.",
"Регистрация в данный момент отключена.": "Регистрация в данный момент отключена.",
"Данные не прошли валидацию. Проверьте длину логина и пароля.": "Данные не прошли валидацию. Проверьте длину логина и пароля.",
"Login must be between 3 and 32 characters long": "Логин должен быть от 3 до 32 символов", "Login must be between 3 and 32 characters long": "Логин должен быть от 3 до 32 символов",
"Login must not contain whitespace characters": "Логин не должен содержать пробелы", "Login must not contain whitespace characters": "Логин не должен содержать пробелы",
"Login must not start with an underscore": "Логин не должен начинаться с символа подчёркивания", "Login must not start with an underscore": "Логин не должен начинаться с символа подчёркивания",