diff options
| author | polo <ordipolo@gmx.fr> | 2026-06-03 23:15:17 +0200 |
|---|---|---|
| committer | polo <ordipolo@gmx.fr> | 2026-06-03 23:15:17 +0200 |
| commit | f37d3f8979b34dbb03d7a39ccbb3889763bea61d (patch) | |
| tree | 81e8301b2db8eddb1a6f27f10fb8f49f97e2eb66 /src/controller | |
| parent | 34c4d0d0c37c7f640a1a6373bba30ebe1129d6c4 (diff) | |
| download | cms-f37d3f8979b34dbb03d7a39ccbb3889763bea61d.tar.gz cms-f37d3f8979b34dbb03d7a39ccbb3889763bea61d.tar.bz2 cms-f37d3f8979b34dbb03d7a39ccbb3889763bea61d.zip | |
exclusion des htaccess des zip, erreur création backup quand dossier var/backups pas encore créé
Diffstat (limited to 'src/controller')
| -rw-r--r-- | src/controller/MaintenanceController.php | 16 | ||||
| -rw-r--r-- | src/controller/UserController.php | 7 |
2 files changed, 18 insertions, 5 deletions
diff --git a/src/controller/MaintenanceController.php b/src/controller/MaintenanceController.php index eb1db04..47e51ac 100644 --- a/src/controller/MaintenanceController.php +++ b/src/controller/MaintenanceController.php | |||
| @@ -49,10 +49,22 @@ class MaintenanceController | |||
| 49 | die; | 49 | die; |
| 50 | } | 50 | } |
| 51 | 51 | ||
| 52 | static public function getLastDump(): void | 52 | static public function getLastDump(EntityManager $entityManager): void |
| 53 | { | 53 | { |
| 54 | $backup_list = Backup::getBackupList(); | ||
| 55 | $nb = count($backup_list); | ||
| 56 | |||
| 57 | if($nb <= 0){ // se produit à la première connexion en mode admin pour une raison algorithimque | ||
| 58 | Backup::mySQLdump($entityManager, 'auto'); | ||
| 59 | $backup_list = Backup::getBackupList(); | ||
| 60 | $nb = count($backup_list); | ||
| 61 | if($nb <= 0){ // improbable, les dossiers devraient déjà avoir été créés | ||
| 62 | throw new RuntimeException("Le serveur a rencontré une erreur: aucun backup n'est disponible et ce n'est pas normal."); | ||
| 63 | } | ||
| 64 | } | ||
| 65 | |||
| 54 | try{ | 66 | try{ |
| 55 | $file_path = Backup::$backup_dir . '/' . Backup::getLastBackupName(); | 67 | $file_path = Backup::$backup_dir . '/' . $backup_list[$nb - 1]; |
| 56 | header('Content-Type: application/octet-stream'); // signifie fichier quelconque, du binaire quoi! | 68 | header('Content-Type: application/octet-stream'); // signifie fichier quelconque, du binaire quoi! |
| 57 | header('Content-Disposition: attachment; filename="' . basename($file_path) . '"'); // pour provoquer un téléchargement et non pour afficher | 69 | header('Content-Disposition: attachment; filename="' . basename($file_path) . '"'); // pour provoquer un téléchargement et non pour afficher |
| 58 | header('Content-Length: ' . filesize($file_path)); // peut servir côté client (barre de progression...) | 70 | header('Content-Length: ' . filesize($file_path)); // peut servir côté client (barre de progression...) |
diff --git a/src/controller/UserController.php b/src/controller/UserController.php index f911d2d..9de2fb8 100644 --- a/src/controller/UserController.php +++ b/src/controller/UserController.php | |||
| @@ -81,8 +81,7 @@ class UserController | |||
| 81 | if($form->validate()){ | 81 | if($form->validate()){ |
| 82 | // à mettre dans une classe métier UserService, Authentication, AuthService? | 82 | // à mettre dans une classe métier UserService, Authentication, AuthService? |
| 83 | $user = self::getUserByName($_POST['login'], $entityManager); | 83 | $user = self::getUserByName($_POST['login'], $entityManager); |
| 84 | if(!empty($user) && $_POST['login'] === $user->getLogin() && password_verify($_POST['password'], $user->getPassword())) | 84 | if(!empty($user) && $_POST['login'] === $user->getLogin() && password_verify($_POST['password'], $user->getPassword())){ |
| 85 | { | ||
| 86 | $log = new Log(true); | 85 | $log = new Log(true); |
| 87 | 86 | ||
| 88 | // protection fixation de session, si l'attaquant crée un cookie de session, il est remplacé | 87 | // protection fixation de session, si l'attaquant crée un cookie de session, il est remplacé |
| @@ -94,7 +93,9 @@ class UserController | |||
| 94 | EmailService::cleanEmails($entityManager); | 93 | EmailService::cleanEmails($entityManager); |
| 95 | 94 | ||
| 96 | try{ | 95 | try{ |
| 97 | Backup::mySQLdump($entityManager, 'auto'); // créer un nouveau backup | 96 | if(file_exists('../var/backups')){ |
| 97 | Backup::mySQLdump($entityManager, 'auto'); // créer un nouveau backup, sauf si les dossiers nécessaires sont encore à créer | ||
| 98 | } | ||
| 98 | } | 99 | } |
| 99 | catch(RuntimeException $e){ | 100 | catch(RuntimeException $e){ |
| 100 | echo '<script>window.error_message = "' . $e->getMessage() . '";</script>'; | 101 | echo '<script>window.error_message = "' . $e->getMessage() . '";</script>'; |
