Files
Cleo/models/mlogin.php
Pierre 77e7cf5d85 feat: Migration complète vers architecture v2.0.1
CHANGEMENTS MAJEURS:
- Fusion des 3 bases de données (uof_frontal, uof_linet, logs) en une seule base 'cleo'
- Migration vers PDO avec pattern Singleton et requêtes préparées
- Configuration externalisée via variables d'environnement (.env)
- Séparation application (dva-front) et base de données (maria3)

SÉCURITÉ:
- Suppression des credentials en dur dans le code
- Implémentation de la classe Database avec gestion d'erreurs sécurisée
- Protection contre les injections SQL via requêtes préparées

INFRASTRUCTURE:
- Container dva-front : MariaDB supprimé, application PHP uniquement
- Container maria3 : Base de données centralisée MariaDB 11.4
- Script de déploiement optimisé (deploy-cleo-fast.sh)

CORRECTIONS:
- Ajout des tables manquantes (z_sessions, z_stats, marches_listes)
- Compatibilité PDO (fetch_assoc → fetch(PDO::FETCH_ASSOC))
- Suppression des commentaires debug dans les réponses AJAX
- Permissions fichiers (.env 644, logs 777 avec owner nobody)

DOCUMENTATION:
- Mise à jour README.md avec architecture actuelle
- Migration README.md marqué comme complété
- TODO.md avec état d'avancement et prochaines étapes (PROD IN4)

🤖 Generated with Claude Code

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-12 15:45:52 +02:00

44 lines
1.5 KiB
PHP

<?php
$aModel = array();
function openSession($userdata)
{
$uid = $userdata['rowid'];
$urole = $userdata['fk_role'];
$sql = "DELETE FROM z_sessions WHERE fk_user=" . $uid . ";";
qSQL($sql, "gen");
session_regenerate_id();
if (!empty($_SERVER["HTTP_CLIENT_IP"])) {
$uip = $_SERVER["HTTP_CLIENT_IP"];
} elseif (!empty($_SERVER["HTTP_X_FORWARDED_FOR"])) {
$uip = $_SERVER["HTTP_X_FORWARDED_FOR"];
} else {
$uip = $_SERVER["REMOTE_ADDR"];
}
$utime = time();
//! en session on récupère son prénom et nom, son id, son ip et son rôle
$_SESSION['uname'] = ucfirst($userdata["prenom"]) . " " . strtoupper($userdata["libelle"]);
$_SESSION['uid'] = $uid;
$_SESSION['urole'] = $urole;
$_SESSION['umodified'] = $utime;
$_SESSION['uip'] = $uip;
session_write_close();
$sql = "INSERT INTO z_sessions (sid, fk_user, role, date_modified, ip, browser) VALUES ('" . session_id() . "', " . $uid . ", '" . $urole . "', '" . date("Y-m-d H:i:s") . "', '" . $uip . "', '" . $_SERVER['HTTP_USER_AGENT'] . "');";
qSQL($sql, "gen");
// et on en profite pour purger les logs
$sql = "DELETE FROM z_logs WHERE DATEDIFF(CURDATE(), z_logs.date)>5;";
qSQL($sql);
// ainsi que les sessions qui ont une date antérieure à 1 jour
$sql = "DELETE FROM z_sessions WHERE DATEDIFF(CURDATE(), z_sessions.date_modified)>1;";
qSQL($sql, "gen");
envoieMail("support@unikoffice.com", "Ouverture de session", "Ouverture de session pour " . $uid);
return TRUE;
}