]> _ Git - cubeextranet.git/commitdiff
wip #3720 @1
authorvincent@cubedesigners.com <vincent@cubedesigners.com@f5622870-0f3c-0410-866d-9cb505b7a8ef>
Mon, 22 Jun 2020 12:15:23 +0000 (12:15 +0000)
committervincent@cubedesigners.com <vincent@cubedesigners.com@f5622870-0f3c-0410-866d-9cb505b7a8ef>
Mon, 22 Jun 2020 12:15:23 +0000 (12:15 +0000)
.htaccess
inc/commons/DAO/class.common.dao.utilisateur.php
inc/commons/Metier/class.common.utilisateur.php
inc/commons/class.common.ajax.php
inc/commons/class.common.core.php
inc/commons/class.common.url.php
style/common.less

index 800f2c9f8d5321a95aa22abfdc945f4f2d6f43c2..4d5cfa7242d3866b61e5c05284ab31d0afc3b124 100644 (file)
--- a/.htaccess
+++ b/.htaccess
@@ -90,7 +90,7 @@ AddCharset UTF-8 log
        RewriteCond %{REQUEST_FILENAME} -d\r
        RewriteRule ^.*$ - [NC,L]\r
 \r
-       RewriteRule ^([-,_a-zA-Z0-9\./]+)$ index.php/$1 [L]\r
+       RewriteRule ^([-,_a-zA-Z0-9\./\%\@]+)$ index.php/$1 [L]\r
 </IfModule>\r
 \r
 <IfModule mod_mime.c>\r
index 149044baebe50bd5b1ace50e3007a8acb12bf730..3c3086260aea746b6c6a98b6765a13d1834e1858 100644 (file)
@@ -78,6 +78,7 @@ class commonDAOUtilisateur extends commonDAO
         if (isset($r->tva_intra)) {\r
             $utilisateur->tva_intra = $r->tva_intra;\r
         }\r
+        $utilisateur->reset_password = $r->reset_password;\r
         return $utilisateur;\r
     }\r
 \r
@@ -104,6 +105,7 @@ class commonDAOUtilisateur extends commonDAO
         $utilisateur->notes = '';\r
         $utilisateur->entreprise = 0;\r
         $utilisateur->enabled = 1;\r
+        $utilisateur->reset_password = '';\r
         $utilisateur->ws_settings = array('resolution' => 150, 'method' => 0, 'quality' => 85, 'objects' => 1800);\r
         return $utilisateur;\r
     }\r
@@ -258,7 +260,7 @@ class commonDAOUtilisateur extends commonDAO
                 $c->update('WHERE id=\'' . $this->con->escape($data['utilisateur_id']) . '\'');\r
                 return $this->selectById($data['utilisateur_id']);\r
             }\r
-        }catch (Exception $e){\r
+        } catch (Exception $e) {\r
             echo $e->getMessage();\r
         }\r
     }\r
@@ -295,6 +297,7 @@ class commonDAOUtilisateur extends commonDAO
         return $c->update('WHERE id=\'' . $this->con->escape($utilisateur_id) . '\'');\r
     }\r
 \r
+\r
     public function changeMotdepasse($utilisateur_id, $nouveau)\r
     {\r
         $c = $this->con->openCursor('extranet_users.user');\r
@@ -302,6 +305,24 @@ class commonDAOUtilisateur extends commonDAO
         return $c->update('WHERE id=\'' . $this->con->escape($utilisateur_id) . '\'');\r
     }\r
 \r
+    public function resetPassword($utilisateur_id)\r
+    {\r
+        $characters = '0123456789abcdefghijklmnopqrstuvwxyz';\r
+        $charactersLength = strlen($characters);\r
+        $randomString = '';\r
+        for ($i = 0; $i < 60; $i++) {\r
+            $randomString .= $characters[random_int(0, $charactersLength - 1)];\r
+        }\r
+\r
+        $c = $this->con->openCursor('extranet_users.user');\r
+        $c->e1_resetpassword = $randomString;\r
+        if ($c->update('WHERE id=\'' . $this->con->escape($utilisateur_id) . '\'')) {\r
+            return $randomString;\r
+        } else {\r
+            return false;\r
+        }\r
+    }\r
+\r
     public function supprime($utilisateur_id)\r
     {\r
         $ok = $this->con->execute('DELETE FROM e2_u WHERE utilisateur_id=\'' . $this->con->escape($utilisateur_id) . '\'');\r
index f149604948b58e01bb9ef2c81344bdd6b312a366..4e8ebf6d8bdcc396d8279049285f71253ee9064a 100644 (file)
@@ -35,6 +35,7 @@ class commonUtilisateur extends cubeMetier {
        protected $ws_password;\r
        protected $ca;\r
        protected $enabled;\r
+       protected $reset_password;\r
 \r
        public function getEmail() {\r
                return trim($this->prenom . ' ' . $this->nom . '<' . $this->email . '>');\r
index d21eb26a75b6d686180c3357ab5daf10b359a435..d36e6490e273bcf6f3a258e2affa040089d2af27 100644 (file)
@@ -75,7 +75,7 @@ class commonAjax
 
     public static function motdepasseOublie($args, &$x)
     {
-        self::form('recupMotdepasse', 'Mot de passe oublié ?', commonUrl::motdepasseOublie($args), __('Recevoir mon mot de passe par e-mail'));
+        self::form('recupMotdepasse', 'Mot de passe oublié ?', commonUrl::motdepasseOublie($args), __('Réinitialiser mon mot de passe'));
     }
 
     public static function mesParametres($args, &$x)
@@ -91,32 +91,40 @@ class commonAjax
         $x->addRedirection();
     }
 
+    public static function resetPassword($args, &$x)
+    {
+
+    }
+
     public static function recupMotdepasse($args, &$x)
     {
         global $core;
         $dao = new commonDAOUtilisateur($core->con);
         $utilisateur = $dao->selectByEmail($_POST['email']);
 
+        $okmsg = __('Nous vous avons envoyé un e-mail. Veuillez le consulter pour poursuivre la procédure.');
+
         if (!is_null($utilisateur) && $utilisateur->enabled) {
+
+            $rand = $dao->resetPassword($utilisateur->utilisateur_id);
+
             $mail = new cubeMail();
             $mail->charset = 'UTF-8';
             $mail->from = FROM_NAME . '<' . FROM_EMAIL . '>';
             $mail->bcc = MAIL_BCC;
-            $mail->subject = '[' . EMAIL_SUBJECT . '] ' . __('Récupération de vos identifiants');
+            $mail->subject = '[' . EMAIL_SUBJECT . '] ' . __('Réinitialisation de votre mot de passe');
             $mail->to = $utilisateur->prenom . ' ' . $utilisateur->nom . '<' . $utilisateur->email . '>';
             $body = __('Bonjour,') . "\r\n\r\n";
-            $body .= ASK_IDENT . "\r\n";
-            $body .= __('Voici toutes les informations vous permettant de vous y connecter à nouveau :') . "\r\n\r\n";
-            $body .= __('Adresse') . ' : https://' . $_SERVER['HTTP_HOST'] . '/' . "\r\n";
-            $body .= __('Identifiant') . ' : ' . $utilisateur->email . "\r\n";
-            $body .= __('Mot de passe') . ' : ' . $utilisateur->password . "\r\n\r\n";
+            $body .= __('Vous recevez cet email car nous avons reçu une demander de réinitialisation de mot de passe pour votre compte. Veuillez cliquer sur le lien ci-dessous pour poursuivre la procédure : ') . "\r\n";
+            $body .= 'https://' . $_SERVER['HTTP_HOST'] . '/resetPassword/' . $utilisateur->email . '/' . $rand . "/\r\n\r\n";
             $body .= __('Cordialement,') . "\r\n";
             $body .= TEAM_NAME;
             $mail->body = $body;
             $ok = $mail->send();
-            $message = $ok ? __('Vos identifiants vous ont été envoyé par e-mail') : __("Une erreur s'est produite lors de l'envoi de vos identifiants");
+            $message = $ok ? $okmsg : __("Une erreur s'est produite lors de l'envoi de vos identifiants");
         } else {
-            $message = __('Cet e-mail ne correspond à aucun utilisateur du système');
+            sleep(2);
+            $message = $okmsg;
         }
         $x->addAlert($message);
         $x->addClosePopup();
@@ -139,7 +147,7 @@ class commonAjax
             $x->addOk('actuel');
         }
 
-        if (strlen($_POST['nouveau']) > 10 || strlen($_POST['nouveau']) < 6 || $_POST['nouveau'] != $_POST['confirmation']) {
+        if (strlen($_POST['nouveau']) < 8 || $_POST['nouveau'] != $_POST['confirmation']) {
             $x->addError('nouveau', '');
             $x->addError('confirmation', '');
             $ok = false;
index 737f41b249765b72d24393a96ca71b93a5c7e960..e90ac8f9c4277eb9f69594bcb55d7e60d3958a85 100644 (file)
@@ -544,7 +544,7 @@ class commonCore extends cubeCore
 \r
 \r
         $this->views->createView('e2_u', 'SELECT id AS utilisateur_id, enabled, email, password, e1_ws_password AS ws_password, firstname AS prenom, lastname AS nom, phone AS telephone,e1_mobile AS mobile,e1_fax as fax, locale AS lang,\r
- e1_ws_settings AS ws_settings, e1_settings AS settings, e1_ws_rights AS ws_rights, e1_ws_domains AS ws_domains, e1_login AS login,e1_grade AS grade,\r
+ e1_ws_settings AS ws_settings, e1_settings AS settings, e1_ws_rights AS ws_rights, e1_ws_domains AS ws_domains, e1_login AS login,e1_grade AS grade,e1_resetpassword AS reset_password,\r
  JSON_UNQUOTE(address->"$.address") AS adresse,\r
  JSON_UNQUOTE(address->"$.postcode") AS code_postal,\r
  JSON_UNQUOTE(address->"$.country") AS pays,\r
index 5f2c0615c3476903820ce69e69adfdce34955795..11ec435538965b27e1551ff63501ada2a10153ca 100644 (file)
@@ -10,7 +10,7 @@ class commonUrl
         // Si l'utilisateur n'est pas connecté, on affiche le formulaire\r
         // de login\r
 \r
-        $bypass = array('stats', 'telecharger', 'telechargerr', 'orpiref');\r
+        $bypass = array('stats', 'telecharger', 'telechargerr', 'orpiref', 'resetPassword');\r
 \r
         if ((!isset($args[0]) || !in_array($args[0], $bypass)) && (is_null($core->user) || !$core->user)) {\r
             $args = array('login');\r
@@ -84,6 +84,34 @@ class commonUrl
         return $res;\r
     }\r
 \r
+    public static function resetPassword($args)\r
+    {\r
+        global $core;\r
+        $dao = new commonDAOUtilisateur($core->con);\r
+        $u = $dao->selectByEmail($args[1]);\r
+        if (!$u || $u->reset_password != $args[2]) {\r
+            http::redirect('/');\r
+        }\r
+\r
+        $res = commonPage::barre();\r
+        $res .= commonPage::tMain();\r
+        $res .= commonPage::bh('resetpassword');\r
+        $res .= '<div class="form">';\r
+        $res .= '<form action="resetPassword" method="post">';\r
+        $res .= '<table>';\r
+        $res .= '<tr><th colspan="2"><strong>' . __('Réinitialisation de votre mot de passe') . '</strong></th></tr>';\r
+        $res .= '<tr><td colspan="2">' . __('Veuillez choisir un mot de passe contenant au moins 8 caractères') . '</td></tr>';\r
+        $res .= '<tr><td>' . __('Votre nouveau mot de passe') . ' : </td><td>' . form::password('new_password', 20, 64, '') . '</td></tr>';\r
+        $res .= '<tr><td>' . __('Confirmation de votre nouveau mot de passe') . ' : </td><td>' . form::password('user_password', 20, 64, '') . '</td></tr>';\r
+        $res .= '<tr><td colspan="2" class="right"><a href="#" class="submit">' . $core->typo->BoutonOK('Réinitialiser le mot de passe') . '</a></td></tr>';\r
+        $res .= '</table>';\r
+        $res .= '</form>';\r
+        $res .= '</div>';\r
+        $res .= commonPage::bf();\r
+        $res .= commonPage::bMain();\r
+        return $res;\r
+    }\r
+\r
     public static function logout($args)\r
     {\r
         if (isset($_SESSION['user_email'])) {\r
index bbf08f81d8bf09c59bea923c4694e81191f474cc..e82a7b389eeb333b260caa8c26cb21d78eb268d2 100644 (file)
@@ -69,10 +69,16 @@ h1 {
 }
 
 .b.login {
-       width: 325px;
+       width: 450px;
        margin: 0 auto;
 }
 
+.b.resetpassword {
+       width: 600px;
+       margin: 0 auto;
+}
+
+
 .onglet {
        background: url('onglet.png');
        background-position: top left;