Admin WiFi : scan réseaux, connexion, mots de passe mémorisés
- Module backend/wifi.py : scan nmcli, connexion, mots de passe persistés dans data/wifi_passwords.json
- Gère la locale FR (oui/non), déduplique les AP multiples, prend le meilleur signal
- Onglet WiFi dans le menu admin avec statut, scan, clavier virtuel AZERTY complet
- Réseaux enregistrés avec bouton connecter/oublier et affichage temporaire du mdp
- API: /api/wifi/status, /api/wifi/scan, /api/wifi/connect, /api/wifi/saved, /api/wifi/password/{ssid}
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -2036,6 +2036,94 @@ h3 {
|
||||
to { opacity: 1; transform: translateY(0); }
|
||||
}
|
||||
|
||||
/* === WiFi === */
|
||||
.wifi-statut {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 1rem;
|
||||
background: rgba(255,255,255,.04);
|
||||
border-radius: var(--rayon);
|
||||
padding: 1rem 1.2rem;
|
||||
}
|
||||
.wifi-statut-icon { font-size: 2rem; }
|
||||
.wifi-statut-info { flex: 1; }
|
||||
.wifi-ssid { font-size: 1.1rem; font-weight: 600; }
|
||||
.wifi-detail { font-size: .8rem; color: var(--texte-secondaire); margin-top: .15rem; }
|
||||
|
||||
.wifi-signal-bars {
|
||||
display: flex;
|
||||
align-items: flex-end;
|
||||
gap: 3px;
|
||||
height: 24px;
|
||||
}
|
||||
.wifi-signal-bars .bar {
|
||||
width: 5px;
|
||||
border-radius: 2px;
|
||||
background: rgba(255,255,255,.15);
|
||||
transition: background .3s;
|
||||
}
|
||||
.wifi-signal-bars .bar.actif { background: var(--succes); }
|
||||
.wifi-signal-bars .bar:nth-child(1) { height: 6px; }
|
||||
.wifi-signal-bars .bar:nth-child(2) { height: 11px; }
|
||||
.wifi-signal-bars .bar:nth-child(3) { height: 16px; }
|
||||
.wifi-signal-bars .bar:nth-child(4) { height: 22px; }
|
||||
|
||||
.wifi-liste { display: flex; flex-direction: column; gap: .4rem; }
|
||||
|
||||
.wifi-reseau {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: .8rem;
|
||||
padding: .7rem 1rem;
|
||||
background: rgba(255,255,255,.03);
|
||||
border: 1px solid rgba(255,255,255,.06);
|
||||
border-radius: 10px;
|
||||
cursor: pointer;
|
||||
transition: background .2s, border-color .2s;
|
||||
}
|
||||
.wifi-reseau:active { background: rgba(255,255,255,.08); }
|
||||
.wifi-reseau.wifi-actif {
|
||||
border-color: var(--succes);
|
||||
background: rgba(76,175,80,.08);
|
||||
}
|
||||
.wifi-reseau-ssid { flex: 1; font-size: .95rem; font-weight: 500; }
|
||||
.wifi-reseau-meta { font-size: .75rem; color: var(--texte-secondaire); }
|
||||
.wifi-reseau-icons { display: flex; align-items: center; gap: .5rem; font-size: .9rem; }
|
||||
.wifi-badge-connecte {
|
||||
font-size: .7rem;
|
||||
padding: .15rem .5rem;
|
||||
border-radius: 6px;
|
||||
background: rgba(76,175,80,.2);
|
||||
color: var(--succes);
|
||||
font-weight: 600;
|
||||
}
|
||||
.wifi-badge-enregistre {
|
||||
font-size: .7rem;
|
||||
padding: .15rem .5rem;
|
||||
border-radius: 6px;
|
||||
background: rgba(255,255,255,.08);
|
||||
color: var(--texte-secondaire);
|
||||
}
|
||||
.wifi-enregistre-item {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: .8rem;
|
||||
padding: .6rem 1rem;
|
||||
background: rgba(255,255,255,.03);
|
||||
border: 1px solid rgba(255,255,255,.06);
|
||||
border-radius: 10px;
|
||||
}
|
||||
.wifi-enregistre-item .wifi-reseau-ssid { flex: 1; }
|
||||
.wifi-enregistre-mdp {
|
||||
font-family: monospace;
|
||||
font-size: .8rem;
|
||||
color: var(--texte-secondaire);
|
||||
background: rgba(255,255,255,.05);
|
||||
padding: .2rem .5rem;
|
||||
border-radius: 4px;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
/* Responsive tactile */
|
||||
@media (max-width: 800px) {
|
||||
.accueil-contenu h1 { font-size: 2.5rem; }
|
||||
|
||||
Reference in New Issue
Block a user