From e1a828346aaffe9744cbdeddf879bcca7d984a28 Mon Sep 17 00:00:00 2001
From: bruneau2017 <valentin.bruneau@ensiie.fr>
Date: Sun, 16 Dec 2018 23:21:04 +0100
Subject: [PATCH] Modif de la page compte utilisateur

---
 src/WebApp/application/controllers/User.php   | 117 ++++++++++++------
 src/WebApp/application/views/compte.php       |  15 ++-
 .../application/views/compte_success.php      |   4 +-
 .../application/views/inscription_success.php |   2 +-
 4 files changed, 91 insertions(+), 47 deletions(-)

diff --git a/src/WebApp/application/controllers/User.php b/src/WebApp/application/controllers/User.php
index b5cb6a0..a1c9e19 100644
--- a/src/WebApp/application/controllers/User.php
+++ b/src/WebApp/application/controllers/User.php
@@ -1,15 +1,17 @@
 <?php
 defined('BASEPATH') OR exit('No direct script access allowed');
 
-class User extends CI_Controller {
+class User extends CI_Controller
+{
 
     public function inscription()
     {
         $this->load->view('inscription');
     }
 
-    public function inscription_success(){
-        if(isset($_POST['suscribe'])) {
+    public function inscription_success()
+    {
+        if (isset($_POST['suscribe'])) {
 
             $this->load->database();
 
@@ -20,35 +22,36 @@ class User extends CI_Controller {
 
             $this->form_validation->set_rules('password', 'Mot de passe', 'required|min_length[7]');
 
-            $this->form_validation->set_rules('password_confirm', 'Confirmation du mot de passe', 'required|matches[password]' );
+            $this->form_validation->set_rules('password_confirm', 'Confirmation du mot de passe', 'required|matches[password]');
 
             if ($this->form_validation->run() == TRUE) {
 
-            $mdp_hash = hash("sha1", $_POST['password']);
+                $mdp_hash = hash("sha1", $_POST['password']);
 
-            $data = array(
-                'mail' => $_POST['mail'],
-                'password' => $mdp_hash,
-            );
+                $data = array(
+                    'mail' => $_POST['mail'],
+                    'password' => $mdp_hash,
+                );
 
-            $this->db->insert('utilisateur', $data);
+                $this->db->insert('utilisateur', $data);
 
-            $this->load->view('inscription_success');
+                $this->load->view('inscription_success');
 
 
-            }
-            else {
+            } else {
                 $this->load->view('inscription');
             }
         }
     }
 
-    public function connexion(){
+    public function connexion()
+    {
         $this->load->view('connexion');
     }
 
-    public function connexion_success(){
-        if(isset($_POST['login'])) {
+    public function connexion_success()
+    {
+        if (isset($_POST['login'])) {
 
             $this->load->database();
 
@@ -59,44 +62,46 @@ class User extends CI_Controller {
             $this->form_validation->set_rules('password_c', 'Mot de passe', 'callback_verif_user');
 
             if ($this->form_validation->run() == TRUE) {
-                $_SESSION['logged_in']=TRUE;
-                $_SESSION['username']=$_POST['email'];
+                $_SESSION['logged_in'] = TRUE;
+                $_SESSION['username'] = $_POST['email'];
                 $this->load->view('connexion_success');
-            }
-            else {
+            } else {
                 $this->load->view('connexion');
             }
         }
     }
 
-    public function verif_user(){
+    public function verif_user()
+    {
         $this->db->select('*');
         $this->db->from('utilisateur');
-        $this->db->where(array('mail' => $_POST['email'] , 'password' => hash("sha1", $_POST['password_c']) ));
-        $query=$this->db->get();
+        $this->db->where(array('mail' => $_POST['email'], 'password' => hash("sha1", $_POST['password_c'])));
+        $query = $this->db->get();
 
-        $user=$query->row();
-        if($user!=NULL) {
+        $user = $query->row();
+        if ($user != NULL) {
             return TRUE;
-        }
-        else{
+        } else {
             $this->form_validation->set_message('verif_user', 'Aucun compte ne correspond à ces identifiants');
             return FALSE;
         }
     }
 
-    public function deconnexion(){
+    public function deconnexion()
+    {
         $this->load->library('session');
         $this->load->view('deconnexion');
         $this->session->sess_destroy();
     }
 
-    public function compte(){
+    public function compte()
+    {
         $this->load->view('compte');
     }
 
-    public function compte_success(){
-        if(isset($_POST['edition'])) {
+    public function compte_success()
+    {
+        if (isset($_POST['edition'])) {
 
             $this->load->database();
 
@@ -104,31 +109,61 @@ class User extends CI_Controller {
 
             $this->form_validation->set_error_delimiters('<div class="error">', '</div>');
 
-            if($_POST['email_edit']!=$_SESSION['username']) {
+            if ($_POST['email_edit'] != $_SESSION['username']) {
 
                 $this->form_validation->set_rules('mail_edit', 'Mail', 'valid_email|is_unique[utilisateur.mail]');
             }
 
+            $this->form_validation->set_rules('old_password', 'Ancien mot de passe', 'callback_verif_oldpassword');
+
             $this->form_validation->set_rules('password_edit', 'Mot de passe', 'min_length[7]');
 
-            $this->form_validation->set_rules('password_c_edit', 'Confirmation du mot de passe', 'matches[password_edit]' );
+            $this->form_validation->set_rules('password_c_edit', 'Confirmation du mot de passe', 'matches[password_edit]');
 
             if ($this->form_validation->run() == TRUE) {
 
-                $this->db->update('utilisateur');
-                $this->db->set('mail',$_POST['email_edit']);
-                $this->db->where(array('mail' => $_SESSION['username']));
-
-                if (isset($_POST['password_edit'])) {
+                if ($_POST['password_edit'] != NULL) {
                     $mdp_hash = hash("sha1", $_POST['password_edit']);
-                    $this->db->update('utilisateur');
-                    $this->db->set('password',$mdp_hash);
+
+                    $this->db->set('password', $mdp_hash);
                     $this->db->where(array('mail' => $_POST['email_edit']));
+                    $this->db->update('utilisateur');
+                }
+
+
+                if ($_POST['email_edit'] != $_SESSION['username']) {
+                    $this->db->set('mail', $_POST['email_edit']);
+                    $this->db->where(array('mail' => $_SESSION['username']));
+                    $this->db->update('utilisateur');
+
+                    $this->load->library('session');
+                    $this->session->sess_destroy();
                 }
+
+                $this->load->view('compte_success');
+            } else {
+                $this->load->view('compte');
+            }
+        }
+    }
+
+    public function verif_oldpassword()
+    {
+        if ($_POST['old_password'] != NULL) {
+            $this->db->select('password');
+            $this->db->from('utilisateur');
+            $this->db->where(array('mail' => $_SESSION['username']));
+            $query = $this->db->get();
+            $password = $query->row();
+
+            if ($password == hash("sha1", $_POST['old_password'])) {
+                return TRUE;
             }
             else {
-                $this->load->view('compte');
+                $this->form_validation->set_message('verif_oldpassword', 'Ancien mot de passe invalide');
+                return FALSE;
             }
         }
+        return TRUE;
     }
 }
\ No newline at end of file
diff --git a/src/WebApp/application/views/compte.php b/src/WebApp/application/views/compte.php
index b31bb21..f2317df 100644
--- a/src/WebApp/application/views/compte.php
+++ b/src/WebApp/application/views/compte.php
@@ -47,8 +47,11 @@ defined('BASEPATH') OR exit('No direct script access allowed');
 <header class="masthead">
     <div class="container d-flex h-100 align-items-center">
         <div class="mx-auto text-center">
-            <h1 class="mx-auto my-0 text-uppercase">Vos informations : </h1>
-            <br><br><br>
+            <br><br>
+            <h1 class="mx-auto my-0 text-uppercase">Votre compte : </h1>
+            <br><br>
+
+            <h2 class="mx-auto my-0 text-uppercase text-white">Modifier vos identifiants : </h2><br>
 
             <form action="compte_success" method="POST">
                 <div class="form-group">
@@ -56,6 +59,12 @@ defined('BASEPATH') OR exit('No direct script access allowed');
                     <?php echo form_error("email_edit");?>
                 </div>
                 <br>
+                <div class="form-group">
+                    <input class="form-control" name="old_password" id="old_password" type="password" placeholder="Entrez votre ancien mot de passe
+  ( Non requis si vous souhaitez modifier uniquement votre email ) ">
+                    <?php echo form_error("old_password");?>
+                </div>
+                <br>
                 <div class="form-group">
                     <input class="form-control" name="password_edit" id="password_edit" type="password" placeholder="Entrez votre nouveau mot de passe
   ( Non requis si vous souhaitez modifier uniquement votre email ) ">
@@ -68,7 +77,7 @@ defined('BASEPATH') OR exit('No direct script access allowed');
                 </div>
                 <br>
                 <div>
-                    <button class="btn btn-primary mx-auto" name="edition">Modifier vos identifiants</button>
+                    <button class="btn btn-primary mx-auto" name="edition">Enregistrer</button>
                 </div>
             </form>
         </div>
diff --git a/src/WebApp/application/views/compte_success.php b/src/WebApp/application/views/compte_success.php
index ba9f975..336dab3 100644
--- a/src/WebApp/application/views/compte_success.php
+++ b/src/WebApp/application/views/compte_success.php
@@ -45,9 +45,9 @@ defined('BASEPATH') OR exit('No direct script access allowed');
 
 <!-- Header -->
 <header class="masthead">
-    <div class="container d-flex h-100 align-items-center">
+    <div class="container d-flex align-items-center">
         <div class="mx-auto text-center">
-            <h1 class="mx-0">Les modifications ont été enregistrées!</h1>
+            <h1> Modifications enregistrées! Déconnexion automatique si vous avez modifier votre adresse mail.</h1>
         </div>
     </div>
 </header>
diff --git a/src/WebApp/application/views/inscription_success.php b/src/WebApp/application/views/inscription_success.php
index 7d59dbf..3b443e9 100644
--- a/src/WebApp/application/views/inscription_success.php
+++ b/src/WebApp/application/views/inscription_success.php
@@ -31,7 +31,7 @@ defined('BASEPATH') OR exit('No direct script access allowed');
 <header class="masthead">
     <div class="container d-flex h-100 align-items-center">
         <div class="mx-auto text-center">
-            <h1 class="mx-auto my-0 text-uppercase">Your are registered!</h1>
+            <h1 class="mx-auto my-0 text-uppercase">Vous êtes inscrit!</h1>
         </div>
     </div>
 </header>
-- 
GitLab