des modifications spécifiques sur les droits des utilisateurs
Build and Push Docker Image / build-and-push (push) Successful in 34s

This commit is contained in:
xavier committed 2026-08-29 10:24:17 +02:00
1 parent b5926633a3
commit e82a23988b
4 files changed
+134 -1

No files matched your search

+10
View File
@@ -0,0 +1,10 @@
import shutil
def obtenir_infos_serveur():
total, used, free = shutil.disk_usage("/")
return {
"disque_total_gb": round(total / (2**30), 2),
"disque_utilise_gb": round(used / (2**30), 2),
"disque_libre_gb": round(free / (2**30), 2),
"pourcentage_utilise": round((used / total) * 100, 1)
}
+36
View File
@@ -294,4 +294,40 @@ def render_rag_upload_modal():
),
id="rag-modal",
style="position: fixed; top: 0; left: 0; width: 100vw; height: 100vh; background: rgba(0,0,0,0.8); display: flex; align-items: center; justify-content: center; z-index: 9999;"
)
def render_backoffice_page(utilisateur, role, tous_les_utilisateurs, stats_serveur):
sections = [
H2(f"⚙️ Paramètres du compte - {utilisateur.capitalize()} ({role})", style="color: #00e5ff;"),
Form(
Div(Label("Modifier mon pseudonyme :"), Input(type="text", name="nouveau_pseudo", value=utilisateur, cls="input-field"), style="margin-bottom: 10px;"),
Div(Label("Nouveau mot de passe :"), Input(type="password", name="nouveau_mdp", placeholder="Laisser vide si inchangé", cls="input-field"), style="margin-bottom: 15px;"),
Button("Enregistrer les modifications", type="submit", cls="btn-submit"),
method="post", action="/backoffice/update_profile", style="background: #1a1a1a; padding: 20px; border-radius: 8px; border: 1px solid #333; margin-bottom: 20px;"
)
]
# Spécificités Admin & Super Admin (Héritage des privilèges inférieurs)
if role in ["Admin", "Super Admin"]:
lignes_utilisateurs = [Li(f"{pseudo} — Rôle : {data.get('role', 'Membre')}") for pseudo, data in tous_les_utilisateurs.items()]
sections.append(Div(
H3("👥 Gestion des utilisateurs", style="color: #4caf50;"),
Ul(*lignes_utilisateurs),
style="background: #1a1a1a; padding: 20px; border-radius: 8px; border: 1px solid #333; margin-bottom: 20px;"
))
# Spécificités Super Admin uniquement
if role == "Super Admin" and stats_serveur:
sections.append(Div(
H3("🖥️ Supervision Système & Serveur", style="color: #ff9800;"),
P(f"💾 Espace disque utilisé : {stats_serveur['disque_utilise_gb']} Go / {stats_serveur['disque_total_gb']} Go ({stats_serveur['pourcentage_utilise']}%)"),
P(f"📂 Espace libre : {stats_serveur['disque_libre_gb']} Go"),
style="background: #1a1a1a; padding: 20px; border-radius: 8px; border: 1px solid #333;"
))
sections.append(A("← Retour au Chat", href="/", style="display: block; margin-top: 20px; color: #00e5ff; text-decoration: none;"))
return Title("Back Office - Aethas38"), Body(
Div(*sections, style="max-width: 600px; margin: 50px auto; font-family: monospace; color: #fff;"),
style="background-color: #0d0d0d; padding: 20px;"
)
+48
View File
@@ -0,0 +1,48 @@
import os
import json
from modules.auth_manager import hasher_mot_de_passe, verifier_mot_de_passe
USERS_FILE = "/DATA/AppData/MULTI-IA-AETHAS38/users.json"
def init_users():
if not os.path.exists(USERS_FILE):
default_users = {
"xavier": {
"email": "admin@mail.aethas38.duckdns.org",
"password_hash": hasher_mot_de_passe("Xavier2026!"),
"role": "Super Admin"
},
"celine": {
"email": "cnoirard@ac-lyon.fr",
"password_hash": hasher_mot_de_passe("Celine2026!"),
"role": "Admin"
}
}
os.makedirs(os.path.dirname(USERS_FILE), exist_ok=True)
with open(USERS_FILE, 'w', encoding='utf-8') as f:
json.dump(default_users, f, indent=4)
def load_users():
init_users()
with open(USERS_FILE, 'r', encoding='utf-8') as f:
return json.load(f)
def save_users(users):
with open(USERS_FILE, 'w', encoding='utf-8') as f:
json.dump(users, f, indent=4)
def changer_nom_utilisateur(ancien_nom, nouveau_nom):
users = load_users()
if ancien_nom in users and nouveau_nom not in users:
users[nouveau_nom] = users.pop(ancien_nom)
save_users(users)
return True
return False
def mettre_a_jour_mot_de_passe(nom_utilisateur, nouveau_mdp):
users = load_users()
if nom_utilisateur in users:
users[nom_utilisateur]["password_hash"] = hasher_mot_de_passe(nouveau_mdp)
save_users(users)
return True
return False