feat: supprimer le checkbox Débloquer devenu inutile (closes #15)

Le serveur Python gère nativement le cleanup des sessions orphelines
au login — plus besoin de forceDisconnect côté client.
This commit is contained in:
Pierre Marx
2026-03-18 22:31:01 -04:00
parent a2784b385d
commit 54ee59681e
4 changed files with 5 additions and 121 deletions

View File

@@ -38,18 +38,6 @@
<option value="">En attente du serveur...</option>
</select>
<!-- Option de déconnexion forcée -->
<div class="force-disconnect-container">
<label class="checkbox-label">
<input type="checkbox" id="forceDisconnect" />
<span>Débloquer</span>
</label>
<small class="checkbox-hint"
>À cocher en cas de problème de connexion ou de session
bloquée.</small
>
</div>
<button type="submit" disabled>Se connecter</button>
<button type="button" id="quitLoginBtn" class="btn-quit">Quitter</button>
<div id="loginError" class="error-message"></div>

View File

@@ -395,11 +395,6 @@ ipcMain.handle('login-agent', async (event, credentials) => {
try {
log(`Tentative de connexion agent: ${credentials.email} Terminal: ${credentials.terminal}`);
log('Tentative de connexion agent', {
email: credentials.email,
terminal: credentials.terminal,
forceDisconnect: credentials.forceDisconnect || false
});
// Deconnecter l'adapter precedent s'il y en a un
if (adapter.state === 'connected') {

View File

@@ -170,7 +170,6 @@ async function handleLogin(e) {
const accessCode = document.getElementById('accessCode').value;
const password = document.getElementById('password').value;
const terminal = document.getElementById('terminal').value;
const forceDisconnect = document.getElementById('forceDisconnect').checked;
const errorDiv = document.getElementById('loginError');
const loginBtn = document.querySelector('#loginForm button[type="submit"]');
@@ -211,11 +210,11 @@ async function handleLogin(e) {
localStorage.setItem('last-terminal', terminal);
// Afficher la modal de progression de connexion
showLoginProgress(forceDisconnect);
showLoginProgress();
// Désactiver le bouton pendant la connexion
loginBtn.disabled = true;
loginBtn.textContent = forceDisconnect ? 'Reconnexion...' : 'Connexion en cours...';
loginBtn.textContent = 'Connexion en cours...';
errorDiv.textContent = '';
// Attendre un peu pour que l'animation soit visible
@@ -227,7 +226,6 @@ async function handleLogin(e) {
email: accessCode, // Utiliser directement le code agent comme email
password: password,
terminal: terminal,
forceDisconnect: forceDisconnect // Ajouter l'option de déconnexion forcée
};
// Appeler l'authentification
@@ -424,19 +422,12 @@ function resetLoginForm() {
const accessCode = document.getElementById('accessCode');
const password = document.getElementById('password');
const terminal = document.getElementById('terminal');
const forceDisconnect = document.getElementById('forceDisconnect');
const loginError = document.getElementById('loginError');
const loginBtn = document.querySelector('#loginForm button[type="submit"]');
if (accessCode) accessCode.value = '';
if (password) password.value = '';
// Réinitialiser le terminal (garder la dernière sélection si elle existe)
// Ne pas réinitialiser le terminal pour garder la préférence
// Décocher la checkbox de déblocage
if (forceDisconnect) forceDisconnect.checked = false;
// Vider les messages d'erreur
if (loginError) loginError.textContent = '';

View File

@@ -227,96 +227,6 @@ body {
font-size: 14px;
}
/* Checkbox de déconnexion forcée */
.force-disconnect-container {
margin: 25px 0 20px 0;
padding: 16px;
background: #f8f9fa;
border-radius: 8px;
border: 1px solid #e9ecef;
transition: all 0.2s ease;
}
.force-disconnect-container:hover {
border-color: #dee2e6;
background: #f1f3f5;
}
.checkbox-label {
display: flex;
align-items: flex-start;
cursor: pointer;
user-select: none;
font-size: 14px;
color: #333;
position: relative;
}
.checkbox-label input[type="checkbox"] {
position: absolute;
opacity: 0;
cursor: pointer;
height: 18px;
width: 18px;
left: 0;
top: 1px;
z-index: 1;
}
.checkbox-label::before {
content: '';
display: inline-block;
width: 18px;
height: 18px;
margin-right: 12px;
margin-top: 1px;
border: 2px solid #dee2e6;
border-radius: 4px;
background: white;
transition: all 0.2s ease;
flex-shrink: 0;
}
.checkbox-label input[type="checkbox"]:checked + span::before {
content: '';
position: absolute;
left: 0;
top: 1px;
width: 18px;
height: 18px;
background: #667eea;
border: 2px solid #667eea;
border-radius: 4px;
}
.checkbox-label input[type="checkbox"]:checked + span::after {
content: '';
position: absolute;
left: 6px;
top: 4px;
width: 6px;
height: 11px;
border: solid white;
border-width: 0 2px 2px 0;
transform: rotate(45deg);
}
.checkbox-label span {
font-weight: 600;
color: #495057;
letter-spacing: 0.3px;
padding-top: 1px;
}
.checkbox-hint {
display: block;
margin-top: 6px;
margin-left: 30px;
font-size: 13px;
color: #6c757d;
line-height: 1.5;
}
/* === PAGE PRINCIPALE === */
#mainPage {
flex-direction: column;