Sécurisation du code avec try : execpt

This commit is contained in:
2026-03-24 11:21:54 +01:00
parent 177f224760
commit 6eccea5b9d
5 changed files with 123 additions and 65 deletions

View File

@@ -10,6 +10,8 @@ from PySide6.QtCore import QThread, Signal
from config.config_manager import ConfigManager
from config.constants import PlayerServerInfo, Urls
from tools.http_client import ApiError
from ui.error_dialog import show_qt_error
from ui.hazard_stripes import HazardButton
from controllers.audio_controller import AudioController
from controllers.glow_animator import GlowAnimator
@@ -32,6 +34,7 @@ class MainWindow(QMainWindow):
super().__init__()
self.config = config_manager
self.stored_user_id = self.config.get_discord_user()
self.queue_thread = None
# UI
@@ -42,16 +45,30 @@ class MainWindow(QMainWindow):
# Par défaut on affiche la page normal pour la connexion au serveur
self.ui.stackedWidget.setCurrentIndex(0)
# On cache par défaut les infos liste d'attente
self.ui.queue_lbl.hide()
self.ui.queue_position.hide()
# Si l'id discord = "" ou des espace, alors on affiche la page comme quoi faut être connecté à discord.
if config_manager.get_discord_user() == "" or config_manager.get_discord_user().isspace():
self.ui.queue_lbl.hide()
self.ui.queue_position.hide()
if self.stored_user_id == "" or self.stored_user_id.isspace():
self.ui.stackedWidget.setCurrentIndex(1)
else:
try:
# on vérifie si le joueur est whitelisté
WhiteList.check_whitelist(Urls.API_URL.value, self.stored_user_id)
except ApiError as exc:
show_qt_error(self, "La Tanière", f"Impossible de vérifier la whitelist.\n\n{exc}")
PlayerServerInfo.is_whitelist = False
PlayerServerInfo.is_staff = False
WhiteList.check_whitelist(Urls.API_URL.value, self.config.get_discord_user())
if PlayerServerInfo.is_whitelist:
self.start_queue()
# si on est whitelisté, on démarre la file d'attente
if PlayerServerInfo.is_whitelist:
self.start_queue()
self.ui.queue_lbl.show()
self.ui.queue_position.show()
else:
self.ui.stackedWidget.setCurrentIndex(2)
# Test bouton en contruction
en_chantier = False
@@ -100,12 +117,6 @@ class MainWindow(QMainWindow):
self._connect_signals()
self._center_window()
# si le jouer n'est pas whitelisté, on affiche la page pour se faire whitelister
if not PlayerServerInfo.is_whitelist:
self.ui.stackedWidget.setCurrentIndex(2)
else:
self.start_queue() # ← Tout à la fin, UI complètement prête
self.show()
@@ -119,8 +130,8 @@ class MainWindow(QMainWindow):
self.ui.connexion_btn.clicked.connect(self._on_connexion)
self.ui.discord_btn.clicked.connect(self._on_discord)
self.ui.intranet_btn.clicked.connect(self._on_intranet)
self.ui.discord_auth_btn.clicked.connect(self._on_discord_auth_btn)
self.ui.no_whitelist_btn.clicked.connect(self.close)
def _center_window(self) -> None:
self.adjustSize()
@@ -137,9 +148,12 @@ class MainWindow(QMainWindow):
# ------------------------------------------------------------------
def _on_connexion(self) -> None:
GetServerTokenForDiscord.register_discord_user(self.config.get_discord_user(),
GetServerTokenForDiscord.authenticate(Urls.API_URL.value))
FiveMLauncher.launch()
try:
session_id = GetServerTokenForDiscord.authenticate(Urls.API_URL.value)
GetServerTokenForDiscord.register_discord_user(self.stored_user_id, session_id)
FiveMLauncher.launch()
except ApiError as exc:
show_qt_error(self, "Connexion impossible", f"Erreur lors de la connexion.\n\n{exc}")
@staticmethod
def _on_discord() -> None:
@@ -150,12 +164,14 @@ class MainWindow(QMainWindow):
self._glow.start()
def _on_discord_auth_btn(self) -> None:
test = discord_oauth.get_discord_user_id()
self.config.set_discord_user(test[0])
PlayerServerInfo.session_id = test[1]
self.config.save()
self.ui.stackedWidget.setCurrentIndex(0)
try:
test = discord_oauth.get_discord_user_id()
self.config.set_discord_user(test[0])
PlayerServerInfo.session_id = test[1]
self.config.save()
self.ui.stackedWidget.setCurrentIndex(0)
except ApiError as exc:
show_qt_error(self, "Connexion Discord", f"Impossible de récupérer ton compte Discord.\n\n{exc}")
# ------------------------------------------------------------------
# Mouse events → délégués au WindowDragger
# ------------------------------------------------------------------
@@ -196,14 +212,13 @@ class MainWindow(QMainWindow):
# Queue managment
# ------------------------------------------------------------------
def start_queue(self):
user_id = self.config.get_discord_user()
self.queue_thread = QueueThread(user_id)
self.queue_thread = QueueThread(user_id, parent=self) # ← parent=self
self.queue_thread = QueueThread(self.stored_user_id)
self.queue_thread = QueueThread(self.stored_user_id, parent=self) # ← parent=self
self.queue_thread.update.connect(self.handle_update)
self.queue_thread.start()
# 🧪 TEMP - Simule une position en queue pour tester l'UI
# self.handle_update("position:3:10")
self.handle_update("position:3:10")
def handle_update(self, message: str):
# print(f"[handle_update] reçu: {message}") # ← Debug