fix(ui): rendre la saisie du code d'accès atteignable à tout moment (v0.8.2)

La fenêtre de saisie ne s'ouvrait qu'une fois, juste après une connexion
manuelle réussie. Un refus, une fenêtre fermée, une reconnexion automatique
— qui n'ouvre volontairement aucune modale — ou l'expiration de
l'autorisation au bout de 12 h laissaient un tunnel monté, un réseau muet
et aucun élément d'interface pour ressaisir un code.

Un bouton sous l'action de connexion et une entrée de systray apparaissent
désormais dès qu'une saisie a un sens : identifiant VPN configuré, tunnel
monté, accès non ouvert.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
2026-09-06 13:44:06 +02:00
co-authored by Claude Opus 5
parent cc9f521a95
commit 996bbe240d
7 changed files with 89 additions and 7 deletions
+14
View File
@@ -44,6 +44,15 @@ class SystemTray(QSystemTrayIcon):
self._action_toggle.triggered.connect(self._toggle_connection)
menu.addAction(self._action_toggle)
# Saisie du code d'accès : le tunnel monte en quarantaine et
# l'autorisation expire d'elle-même, il faut donc pouvoir y revenir
# sans passer par une déconnexion. Masquée quand elle n'a pas lieu
# d'être — pas d'identifiant VPN, tunnel à l'arrêt, accès déjà ouvert.
self._action_access = QAction("🔐 Saisir le code d'accès", self)
self._action_access.triggered.connect(self._win.request_access_code)
self._action_access.setVisible(False)
menu.addAction(self._action_access)
menu.addSeparator()
# Panneau de configuration
@@ -76,6 +85,11 @@ class SystemTray(QSystemTrayIcon):
except Exception:
self._connected = False
# La fenêtre principale est seule à savoir si le serveur a ouvert
# l'accès : elle tient cet état, qu'aucune commande WireGuard ne
# rapporte — le tunnel est identique, ouvert ou en quarantaine.
self._action_access.setVisible(self._win.access_code_needed())
if self._connected:
self.setIcon(icons.icon_connected())
self.setToolTip("WGSecure — Connecté")