Browse Source

Ajoute une fonction de raz de mot de passe

En ajoutant un fichier bien précis, et qui contient le nouveau mot de
passe, on réinitialise le mot de passe. Cela nécessite d'avoir un accès
aux fichiers.
Christophe HENRY 8 years ago
parent
commit
5756eba1e9
2 changed files with 28 additions and 0 deletions
  1. 5 0
      User.class.php
  2. 23 0
      action.php

+ 5 - 0
User.class.php

@@ -31,6 +31,11 @@ class User extends MysqlEntity{
         return $userManager->load(array('login'=>$login,'password'=>User::encrypt($password,$salt)));
     }
 
+    function get($login){
+        $userManager = new User();
+        return $userManager->load(array('login'=>$login,));
+    }
+
     function getToken() {
         assert('!empty($this->password)');
         assert('!empty($this->login)');

+ 23 - 0
action.php

@@ -474,6 +474,29 @@ switch ($action){
 
     case 'login':
 
+        define('RESET_PASSWORD_FILE', 'resetPassword');
+        $resetPassword = trim(@file_get_contents(RESET_PASSWORD_FILE));
+        if (FALSE!==$resetPassword && !empty($resetPassword)) {
+            /* Pour reinitialiser le mot de passe, créer le fichier
+            RESET_PASSWORD_FILE avec le nouveau mot de passe à l'intérieur. */
+            @unlink(RESET_PASSWORD_FILE);
+            if (file_exists(RESET_PASSWORD_FILE)) {
+                $message = 'Unable to remove "'.RESET_PASSWORD_FILE.'"!';
+                /* Pas supprimable ==> on ne remet pas à zéro */
+            } else {
+                assert('!empty($resetPassword)');
+                $id = User::get($_['login'])->getId();
+                $salt = $configurationManager->get('cryptographicSalt');
+                $userManager->change(
+                    array('password'=>User::encrypt($resetPassword, $salt)),
+                    array('id'=>$id)
+                );
+                $message = "User (id=$id) Password reset to '$resetPassword'.";
+            }
+            error_log($message);
+            die("<h2>$message</h2>");
+        }
+
         if(isset($_['usr'])){
             $user = $userManager->existAuthToken($_['usr']);
             if($user==false){