add register
This commit is contained in:
parent
4276b147f2
commit
0f13849b23
@ -50,6 +50,48 @@ async def login(login, password):
|
|||||||
# Другие непредвиденные ошибки
|
# Другие непредвиденные ошибки
|
||||||
return False, f"Произошла ошибка: {e}"
|
return False, f"Произошла ошибка: {e}"
|
||||||
|
|
||||||
|
async def register(login, password, invite=None):
|
||||||
|
"""
|
||||||
|
Отправляет запрос на регистрацию нового пользователя.
|
||||||
|
|
||||||
|
:param login: Логин
|
||||||
|
:param password: Пароль
|
||||||
|
:param invite: Инвайт-код (опционально)
|
||||||
|
:return: Кортеж (успех: bool, сообщение: str)
|
||||||
|
"""
|
||||||
|
url = f"{config.BASE_URL}/v1/auth/register"
|
||||||
|
payload = {"login": login, "password": password}
|
||||||
|
if invite:
|
||||||
|
payload["invite"] = invite
|
||||||
|
|
||||||
|
try:
|
||||||
|
async with httpx.AsyncClient(http2=True) as client:
|
||||||
|
response = await client.post(url, json=payload)
|
||||||
|
|
||||||
|
if response.status_code == 201:
|
||||||
|
return True, "Регистрация прошла успешно!"
|
||||||
|
|
||||||
|
# Обрабатываем специфичные ошибки
|
||||||
|
error_data = response.json()
|
||||||
|
error_message = error_data.get("detail", "Произошла неизвестная ошибка")
|
||||||
|
|
||||||
|
if response.status_code == 409: # Конфликт (логин занят)
|
||||||
|
return False, "Этот логин уже занят."
|
||||||
|
elif response.status_code == 400: # Неверный инвайт
|
||||||
|
return False, "Неверный инвайт-код."
|
||||||
|
elif response.status_code == 403: # Регистрация отключена
|
||||||
|
return False, "Регистрация в данный момент отключена."
|
||||||
|
elif response.status_code == 422: # Ошибка валидации
|
||||||
|
return False, "Данные не прошли валидацию. Проверьте длину логина и пароля."
|
||||||
|
else:
|
||||||
|
return False, f"Ошибка сервера ({response.status_code}): {error_message}"
|
||||||
|
|
||||||
|
except httpx.RequestError as e:
|
||||||
|
return False, f"Ошибка сети: {e}"
|
||||||
|
except Exception as e:
|
||||||
|
return False, f"Произошла ошибка: {e}"
|
||||||
|
|
||||||
|
|
||||||
# Пример использования (для тестирования)
|
# Пример использования (для тестирования)
|
||||||
async def main():
|
async def main():
|
||||||
# Замените на реальные данные для теста
|
# Замените на реальные данные для теста
|
||||||
|
|||||||
@ -283,15 +283,14 @@ class LoginView(QWidget):
|
|||||||
return True, ""
|
return True, ""
|
||||||
|
|
||||||
def handle_register(self):
|
def handle_register(self):
|
||||||
# Trigger validation for all fields
|
# Принудительная валидация всех полей
|
||||||
# self.name_input.on_text_changed(self.name_input.text())
|
|
||||||
self.reg_login_input.on_text_changed(self.reg_login_input.text())
|
self.reg_login_input.on_text_changed(self.reg_login_input.text())
|
||||||
self.reg_password_input.on_text_changed(self.reg_password_input.text())
|
self.reg_password_input.on_text_changed(self.reg_password_input.text())
|
||||||
self.confirm_password_input.on_text_changed(self.confirm_password_input.text())
|
self.confirm_password_input.on_text_changed(self.confirm_password_input.text())
|
||||||
self.invite_code_input.on_text_changed(self.invite_code_input.text())
|
self.invite_code_input.on_text_changed(self.invite_code_input.text())
|
||||||
|
|
||||||
|
# Проверка, что все поля валидны
|
||||||
if not all([
|
if not all([
|
||||||
# self.name_input.is_valid,
|
|
||||||
self.reg_login_input.is_valid,
|
self.reg_login_input.is_valid,
|
||||||
self.reg_password_input.is_valid,
|
self.reg_password_input.is_valid,
|
||||||
self.confirm_password_input.is_valid,
|
self.confirm_password_input.is_valid,
|
||||||
@ -300,13 +299,28 @@ class LoginView(QWidget):
|
|||||||
QMessageBox.warning(self, localizer.translate("Ошибка"), localizer.translate("Пожалуйста, исправьте ошибки в форме"))
|
QMessageBox.warning(self, localizer.translate("Ошибка"), localizer.translate("Пожалуйста, исправьте ошибки в форме"))
|
||||||
return
|
return
|
||||||
|
|
||||||
# name = self.name_input.text()
|
|
||||||
login = self.reg_login_input.text()
|
login = self.reg_login_input.text()
|
||||||
# password = self.reg_password_input.text()
|
password = self.reg_password_input.text()
|
||||||
# invite = self.invite_code_input.text()
|
invite = self.invite_code_input.text() or None # Отправляем None, если строка пустая
|
||||||
|
|
||||||
|
# Блокируем кнопку на время запроса
|
||||||
|
self.register_button.setEnabled(False)
|
||||||
|
self.register_button.setText(localizer.translate("Регистрация..."))
|
||||||
|
|
||||||
|
try:
|
||||||
|
success, message = asyncio.run(auth_service.register(login, password, invite))
|
||||||
|
|
||||||
|
if success:
|
||||||
|
QMessageBox.information(self, localizer.translate("Успех"), message)
|
||||||
|
self.show_login_form()
|
||||||
|
else:
|
||||||
|
QMessageBox.warning(self, localizer.translate("Ошибка"), message)
|
||||||
|
|
||||||
|
finally:
|
||||||
|
# Возвращаем кнопку в исходное состояние
|
||||||
|
self.register_button.setEnabled(True)
|
||||||
|
self.register_button.setText(localizer.translate("Зарегистрироваться"))
|
||||||
|
|
||||||
QMessageBox.information(self, "Успех", f"{localizer.translate("Регистрация прошла успешно для")} {login}")
|
|
||||||
self.show_login_form()
|
|
||||||
|
|
||||||
def change_language(self, display_name):
|
def change_language(self, display_name):
|
||||||
lang_code = self.lang_map.get(display_name)
|
lang_code = self.lang_map.get(display_name)
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user