add register
This commit is contained in:
parent
4276b147f2
commit
0f13849b23
@ -50,6 +50,48 @@ async def login(login, password):
|
||||
# Другие непредвиденные ошибки
|
||||
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():
|
||||
# Замените на реальные данные для теста
|
||||
|
||||
@ -283,15 +283,14 @@ class LoginView(QWidget):
|
||||
return True, ""
|
||||
|
||||
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_password_input.on_text_changed(self.reg_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())
|
||||
|
||||
# Проверка, что все поля валидны
|
||||
if not all([
|
||||
# self.name_input.is_valid,
|
||||
self.reg_login_input.is_valid,
|
||||
self.reg_password_input.is_valid,
|
||||
self.confirm_password_input.is_valid,
|
||||
@ -300,13 +299,28 @@ class LoginView(QWidget):
|
||||
QMessageBox.warning(self, localizer.translate("Ошибка"), localizer.translate("Пожалуйста, исправьте ошибки в форме"))
|
||||
return
|
||||
|
||||
# name = self.name_input.text()
|
||||
login = self.reg_login_input.text()
|
||||
# password = self.reg_password_input.text()
|
||||
# invite = self.invite_code_input.text()
|
||||
password = self.reg_password_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):
|
||||
lang_code = self.lang_map.get(display_name)
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user