fix(ui): la saisie du code ne dépend plus du champ Identifiant VPN (v0.8.4)
Le bouton et l'entrée de systray étaient conditionnés à un champ vide par défaut depuis son introduction en v0.8.0 : un poste tenu en quarantaine par le serveur n'affichait donc aucun moyen d'en sortir. La saisie ne dépend plus que de l'état du tunnel ; la fenêtre demande l'identifiant quand il manque et ne l'enregistre qu'une fois le serveur l'ayant accepté. L'état « Non géré par le serveur » disparaît au passage : le client l'affirmait à partir de sa seule configuration locale, sans rien vérifier. « Non vérifié » est la vérité tant qu'aucun code n'a été validé. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
@@ -41,6 +41,7 @@ class AccessCodeDialog(QDialog):
|
||||
self._cfg = cfg
|
||||
self._worker: TaskWorker | None = None
|
||||
self._message = ""
|
||||
self._username = ""
|
||||
self.setWindowTitle("WGSecure — Code d'accès")
|
||||
self.setFixedWidth(360)
|
||||
self.setModal(True)
|
||||
@@ -83,6 +84,19 @@ class AccessCodeDialog(QDialog):
|
||||
sep.setStyleSheet(f"color: {theme.BORDER_SOFT};")
|
||||
layout.addWidget(sep)
|
||||
|
||||
# L'identifiant n'est demandé que s'il manque encore. Le renvoyer au
|
||||
# panneau Administrateur à cet instant précis — tunnel monté, accès
|
||||
# fermé, code en main — était un cul-de-sac : il est saisi ici, puis
|
||||
# enregistré dès que le serveur l'a reconnu.
|
||||
self._user_input: QLineEdit | None = None
|
||||
if not (self._cfg.wg.get("vpn_username") or "").strip():
|
||||
self._user_input = QLineEdit()
|
||||
self._user_input.setPlaceholderText("Identifiant VPN (ex. TestB)")
|
||||
self._user_input.setAlignment(Qt.AlignmentFlag.AlignCenter)
|
||||
self._user_input.setStyleSheet(self._input_css(theme.BORDER_SOFT))
|
||||
self._user_input.returnPressed.connect(self._submit)
|
||||
layout.addWidget(self._user_input)
|
||||
|
||||
self._code_input = QLineEdit()
|
||||
self._code_input.setPlaceholderText("000 000")
|
||||
self._code_input.setMaxLength(7)
|
||||
@@ -170,10 +184,18 @@ class AccessCodeDialog(QDialog):
|
||||
self._fail("Entrez exactement 6 chiffres.")
|
||||
return
|
||||
|
||||
self._username = ""
|
||||
if self._user_input is not None:
|
||||
self._username = self._user_input.text().strip()
|
||||
if not self._username:
|
||||
self._error_label.setText("Indiquez votre identifiant VPN.")
|
||||
self._user_input.setStyleSheet(self._input_css(theme.FAIL_TEXT))
|
||||
return
|
||||
|
||||
self._error_label.setText("")
|
||||
self._set_busy(True)
|
||||
self._worker = TaskWorker(vpn_session.authenticate, self._cfg, raw,
|
||||
tag="auth", parent=self)
|
||||
self._username, tag="auth", parent=self)
|
||||
self._worker.done.connect(self._on_reply)
|
||||
self._worker.finished.connect(self._worker.deleteLater)
|
||||
self._worker.start()
|
||||
@@ -182,6 +204,11 @@ class AccessCodeDialog(QDialog):
|
||||
self._worker = None
|
||||
self._message = message
|
||||
if ok:
|
||||
# Enregistré seulement maintenant : un identifiant que le serveur
|
||||
# a refusé n'a rien à faire dans la configuration.
|
||||
if self._username:
|
||||
self._cfg.set("wg", "vpn_username", self._username)
|
||||
self._cfg.save()
|
||||
self.accept()
|
||||
return
|
||||
self._set_busy(False)
|
||||
|
||||
Reference in New Issue
Block a user