Refonte domo91
This commit is contained in:
@@ -1,6 +1,6 @@
|
|||||||
from alerte_sms import envoyer_sms_ovh
|
from alerte_sms import envoyer_sms_ovh
|
||||||
|
|
||||||
site = "Saclay" # ou "Meudon", selon ce que tu veux tester
|
site = "Meudon" # ou "Meudon", selon ce que tu veux tester
|
||||||
message = "✅ Test SMS depuis le script Monitor - tout fonctionne bien"
|
message = "✅ Test SMS depuis le script Monitor - tout fonctionne bien"
|
||||||
|
|
||||||
envoyer_sms_ovh(message, site)
|
envoyer_sms_ovh(message, site)
|
||||||
|
|||||||
101
domo91.py
101
domo91.py
@@ -235,6 +235,45 @@ def ajouter_utilisateur(utilisateur, mot_de_passe, role, lieu, expiration):
|
|||||||
except Exception as e:
|
except Exception as e:
|
||||||
return False, f"⚠️ Erreur : {e}"
|
return False, f"⚠️ Erreur : {e}"
|
||||||
|
|
||||||
|
def afficher_gestion_expiration(conn):
|
||||||
|
st.subheader("🔐 Gestion des expirations d'accès")
|
||||||
|
|
||||||
|
# Récupérer les utilisateurs avec leurs dates d'expiration
|
||||||
|
cursor = conn.cursor(dictionary=True)
|
||||||
|
cursor.execute("SELECT Id, utilisateur, Expiration FROM MotsDePasse")
|
||||||
|
users = cursor.fetchall()
|
||||||
|
cursor.close()
|
||||||
|
|
||||||
|
df = pd.DataFrame(users)
|
||||||
|
df['Expiration'] = pd.to_datetime(df['Expiration']).dt.date
|
||||||
|
|
||||||
|
for _, row in df.iterrows():
|
||||||
|
est_expire = row['Expiration'] < date.today()
|
||||||
|
fond = "#ffe6e6" if est_expire else "#f8f9fa"
|
||||||
|
with st.container():
|
||||||
|
st.markdown(f"<div style='background-color:{fond}; padding:10px; border-radius:8px;'>",
|
||||||
|
unsafe_allow_html=True)
|
||||||
|
col1, col2, col3 = st.columns([4, 2, 1])
|
||||||
|
with col1:
|
||||||
|
st.markdown(f"**Utilisateur :** {row['utilisateur']}")
|
||||||
|
if est_expire:
|
||||||
|
st.markdown("<span style='color:red; font-weight:bold;'>⛔ Accès expiré</span>",
|
||||||
|
unsafe_allow_html=True)
|
||||||
|
|
||||||
|
with col2:
|
||||||
|
new_date = st.date_input("Expiration", row['Expiration'], key=f"exp_{row['Id']}")
|
||||||
|
with col3:
|
||||||
|
if st.button("✅", key=f"save_{row['Id']}"):
|
||||||
|
try:
|
||||||
|
cursor = conn.cursor()
|
||||||
|
cursor.execute("UPDATE MotsDePasse SET Expiration = %s WHERE Id = %s",
|
||||||
|
(new_date, row['Id']))
|
||||||
|
conn.commit()
|
||||||
|
st.success(f"✅ {row['utilisateur']} mis à jour")
|
||||||
|
cursor.close()
|
||||||
|
except Exception as e:
|
||||||
|
st.error(f"Erreur : {e}")
|
||||||
|
|
||||||
# 📄 Affichage bouton PDF si une date est choisie
|
# 📄 Affichage bouton PDF si une date est choisie
|
||||||
site_pdf = (
|
site_pdf = (
|
||||||
st.session_state.get("lieu_autorise")
|
st.session_state.get("lieu_autorise")
|
||||||
@@ -627,46 +666,8 @@ if st.session_state["authenticated"]:
|
|||||||
elif onglet == "Entretien":
|
elif onglet == "Entretien":
|
||||||
st.markdown("## 🧰 Gestion des sondes en entretien")
|
st.markdown("## 🧰 Gestion des sondes en entretien")
|
||||||
|
|
||||||
# --- Gérer les expirations comptes ---
|
|
||||||
def afficher_gestion_expiration(conn):
|
|
||||||
st.subheader("🔐 Gestion des expirations d'accès")
|
|
||||||
|
|
||||||
# Récupérer les utilisateurs avec leurs dates d'expiration
|
st.markdown("</div><br>", unsafe_allow_html=True)
|
||||||
cursor = conn.cursor(dictionary=True)
|
|
||||||
cursor.execute("SELECT Id, utilisateur, Expiration FROM MotsDePasse")
|
|
||||||
users = cursor.fetchall()
|
|
||||||
cursor.close()
|
|
||||||
|
|
||||||
df = pd.DataFrame(users)
|
|
||||||
df['Expiration'] = pd.to_datetime(df['Expiration']).dt.date
|
|
||||||
|
|
||||||
for _, row in df.iterrows():
|
|
||||||
est_expire = row['Expiration'] < date.today()
|
|
||||||
fond = "#ffe6e6" if est_expire else "#f8f9fa" # rouge clair si expiré, gris clair sinon
|
|
||||||
with st.container():
|
|
||||||
st.markdown(f"<div style='background-color:{fond}; padding:10px; border-radius:8px;'>",
|
|
||||||
unsafe_allow_html=True)
|
|
||||||
col1, col2, col3 = st.columns([4, 2, 1])
|
|
||||||
with col1:
|
|
||||||
st.markdown(f"**Utilisateur :** {row['utilisateur']}")
|
|
||||||
if est_expire:
|
|
||||||
st.markdown("<span style='color:red; font-weight:bold;'>⛔ Accès expiré</span>",
|
|
||||||
unsafe_allow_html=True)
|
|
||||||
|
|
||||||
with col2:
|
|
||||||
new_date = st.date_input("Expiration", row['Expiration'], key=f"exp_{row['Id']}")
|
|
||||||
with col3:
|
|
||||||
if st.button("✅", key=f"save_{row['Id']}"):
|
|
||||||
try:
|
|
||||||
cursor = conn.cursor()
|
|
||||||
cursor.execute("UPDATE MotsDePasse SET Expiration = %s WHERE Id = %s",
|
|
||||||
(new_date, row['Id']))
|
|
||||||
conn.commit()
|
|
||||||
st.success(f"✅ {row['utilisateur']} mis à jour")
|
|
||||||
cursor.close()
|
|
||||||
except Exception as e:
|
|
||||||
st.error(f"Erreur : {e}")
|
|
||||||
st.markdown("</div><br>", unsafe_allow_html=True)
|
|
||||||
role = st.session_state.get("role", "utilisateur")
|
role = st.session_state.get("role", "utilisateur")
|
||||||
lieu = st.session_state.get("lieu_autorise") if role != "superviseur" else st.selectbox("Choisir un lieu :",
|
lieu = st.session_state.get("lieu_autorise") if role != "superviseur" else st.selectbox("Choisir un lieu :",
|
||||||
["Saclay", "Meudon"])
|
["Saclay", "Meudon"])
|
||||||
@@ -709,16 +710,6 @@ if st.session_state["authenticated"]:
|
|||||||
except Exception as e:
|
except Exception as e:
|
||||||
st.error(f"Erreur lors du chargement des sondes : {e}")
|
st.error(f"Erreur lors du chargement des sondes : {e}")
|
||||||
|
|
||||||
# 👉 Gestion des expirations visibles uniquement pour les superviseurs
|
|
||||||
if role == "superviseur":
|
|
||||||
try:
|
|
||||||
conn = mysql.connector.connect(**db_config)
|
|
||||||
afficher_gestion_expiration(conn)
|
|
||||||
conn.close()
|
|
||||||
except Exception as e:
|
|
||||||
st.error(f"Erreur lors du chargement des comptes : {e}")
|
|
||||||
|
|
||||||
|
|
||||||
# --- ONGLET TRAFFIC ------
|
# --- ONGLET TRAFFIC ------
|
||||||
elif onglet == "Traffic":
|
elif onglet == "Traffic":
|
||||||
st.markdown("## 🚦 Connexions récentes")
|
st.markdown("## 🚦 Connexions récentes")
|
||||||
@@ -778,14 +769,18 @@ if st.session_state["authenticated"]:
|
|||||||
cursor.execute("SELECT utilisateur, role, Lieu, Expiration FROM MotsDePasse ORDER BY utilisateur")
|
cursor.execute("SELECT utilisateur, role, Lieu, Expiration FROM MotsDePasse ORDER BY utilisateur")
|
||||||
users = cursor.fetchall()
|
users = cursor.fetchall()
|
||||||
cursor.close()
|
cursor.close()
|
||||||
conn.close()
|
|
||||||
|
|
||||||
if users:
|
if users:
|
||||||
import pandas as pd
|
|
||||||
|
|
||||||
df_users = pd.DataFrame(users)
|
df_users = pd.DataFrame(users)
|
||||||
st.dataframe(df_users)
|
st.dataframe(df_users)
|
||||||
else:
|
else:
|
||||||
st.info("Aucun utilisateur trouvé.")
|
st.info("Aucun utilisateur trouvé.")
|
||||||
|
|
||||||
|
# ✅ Appel de la gestion des expirations
|
||||||
|
afficher_gestion_expiration(conn)
|
||||||
|
conn.close()
|
||||||
|
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
st.error(f"Erreur lors du chargement des utilisateurs : {e}")
|
st.error(f"Erreur lors du chargement des utilisateurs : {e}")
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -1,39 +0,0 @@
|
|||||||
# -*- coding: utf-8 -*-
|
|
||||||
import mysql.connector
|
|
||||||
import bcrypt
|
|
||||||
from dotenv import load_dotenv
|
|
||||||
import os
|
|
||||||
|
|
||||||
# Charger les variables d'environnement depuis .env
|
|
||||||
load_dotenv()
|
|
||||||
|
|
||||||
conn = mysql.connector.connect(
|
|
||||||
host=os.getenv("DB_HOST"),
|
|
||||||
user=os.getenv("DB_USER"),
|
|
||||||
password=os.getenv("DB_PASSWORD"),
|
|
||||||
database=os.getenv("DB_NAME")
|
|
||||||
)
|
|
||||||
cursor = conn.cursor()
|
|
||||||
|
|
||||||
cursor.execute("SELECT utilisateur, mot_de_passe FROM MotsDePasse")
|
|
||||||
utilisateurs = cursor.fetchall()
|
|
||||||
|
|
||||||
def hash_password(plain_text_password):
|
|
||||||
return bcrypt.hashpw(plain_text_password.encode('utf-8'), bcrypt.gensalt()).decode('utf-8')
|
|
||||||
|
|
||||||
for utilisateur, mot_de_passe in utilisateurs:
|
|
||||||
if mot_de_passe.startswith('$2b$') or mot_de_passe.startswith('$2a$'):
|
|
||||||
print(f"{utilisateur} : déjà haché")
|
|
||||||
continue
|
|
||||||
|
|
||||||
hashe = hash_password(mot_de_passe)
|
|
||||||
cursor.execute("UPDATE MotsDePasse SET mot_de_passe = %s WHERE utilisateur = %s", (hashe, utilisateur))
|
|
||||||
print(f"{utilisateur} : mot de passe haché")
|
|
||||||
|
|
||||||
conn.commit()
|
|
||||||
conn.close()
|
|
||||||
print("Mise à jour terminée.")
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Reference in New Issue
Block a user