diff --git a/CodeIgniter-3.1.13/application/config/routes.php b/CodeIgniter-3.1.13/application/config/routes.php
index d54b555..afc829c 100644
--- a/CodeIgniter-3.1.13/application/config/routes.php
+++ b/CodeIgniter-3.1.13/application/config/routes.php
@@ -58,7 +58,6 @@ $route['artiste/(:num)'] = 'artiste/index/$1';
$route['search'] = 'search/index';
$route['mentions-legals'] = 'MentionsLegales/index';
$route['playlists/add_artist/(:num)'] = 'playlists/add_artist/$1';
-
-
+$route['utilisateur/confirmation'] = 'utilisateur/confirmation';
diff --git a/CodeIgniter-3.1.13/application/controllers/Utilisateur.php b/CodeIgniter-3.1.13/application/controllers/Utilisateur.php
index 0819d4f..116fb18 100644
--- a/CodeIgniter-3.1.13/application/controllers/Utilisateur.php
+++ b/CodeIgniter-3.1.13/application/controllers/Utilisateur.php
@@ -19,7 +19,6 @@ class Utilisateur extends CI_Controller {
}
public function inscription(){
- // Définir les règles de validation
$this->form_validation->set_rules('email', 'Email', 'required|valid_email|is_unique[utilisateur.email]');
$this->form_validation->set_rules('nom', 'Nom', 'required');
$this->form_validation->set_rules('prenom', 'Prénom', 'required');
@@ -29,43 +28,135 @@ class Utilisateur extends CI_Controller {
));
if ($this->form_validation->run() == FALSE) {
-
- $data['title']="Inscription";
- $data['css']="assets/css/inscription";
-
- // Charger la vue avec les erreurs
- $this->load->view('layout/header_dark',$data);
+ $data['title'] = "Inscription";
+ $data['css'] = "assets/css/inscription";
+
+ $this->load->view('layout/header_dark', $data);
$this->load->view('inscription');
$this->load->view('layout/footer_dark');
} else {
- // Récupérer les données du formulaire
+ $code = rand(100000, 999999); // Générer un code de confirmation à 6 chiffres
$data = array(
'email' => $this->input->post('email'),
'nom' => $this->input->post('nom'),
'prenom' => $this->input->post('prenom'),
- 'password' => password_hash($this->input->post('password'), PASSWORD_DEFAULT) // Hasher le mot de passe
+ 'password' => password_hash($this->input->post('password'), PASSWORD_DEFAULT),
+ 'confirmation_code' => $code,
+ 'code_sent_at' => date('Y-m-d H:i:s')
);
- // Insérer les données dans la base de données
if ($this->Utilisateur_model->insert_user($data)) {
- // Envoyer un email de confirmation
- $this->send_confirmation_email($data['email'], $data['prenom'], $data['nom']);
-
- $this->session->set_flashdata('success', 'Inscription réussie. Vous pouvez maintenant vous connecter.');
- redirect('utilisateur/connexion');
+ $this->send_confirmation_code_email($data['email'], $data['prenom'], $data['nom'], $code);
+ $this->session->set_flashdata('success', 'Inscription réussie. Un code de confirmation a été envoyé à votre adresse email.');
+ redirect('utilisateur/confirmer');
} else {
$data['error'] = 'Une erreur est survenue. Veuillez réessayer.';
-
- $data['title']="Inscription";
- $data['css']="assets/css/inscription";
-
- $this->load->view('layout/header_dark',$data);
- $this->load->view('inscription',$data);
+ $data['title'] = "Inscription";
+ $data['css'] = "assets/css/inscription";
+
+ $this->load->view('layout/header_dark', $data);
+ $this->load->view('inscription', $data);
$this->load->view('layout/footer_dark');
}
}
}
+ private function send_confirmation_code_email($to_email, $prenom, $nom, $code) {
+ $mail = new PHPMailer(true);
+ try {
+ // Configuration du serveur SMTP
+ $mail->isSMTP();
+ $mail->Host = 'smtp.gmail.com';
+ $mail->SMTPAuth = true;
+ $mail->Username = 'onzeur.contact@gmail.com';
+ $mail->Password = 'ofoi hjpo isxf azdk';
+ $mail->SMTPSecure = 'tls';
+ $mail->Port = 587;
+
+ // Destinataires
+ $mail->setFrom('onzeur.contact@gmail.com', 'Support Onzeur');
+ $mail->addAddress($to_email);
+
+ // Contenu de l'email
+ $mail->isHTML(true);
+ $mail->Subject = 'Votre code de confirmation - Onzeur';
+
+ $mail_body = '
+
+
+
+
+
+
+
+
+
+
+
+
Bonjour, '.$prenom.' '.$nom.' !
+
Merci de vous être inscrit sur Onzeur. Pour finaliser votre inscription, veuillez utiliser le code de confirmation suivant :
+
Code de confirmation : '.$code.'
+
Ce code est valable pendant 1 minute.
+
Si vous n\'avez pas demandé cette inscription, veuillez ignorer cet email.
+
Cordialement,
L\'équipe Onzeur
+
+
+
+
+ ';
+
+ $mail->Body = $mail_body;
+
+ $mail->send();
+ } catch (Exception $e) {
+ log_message('error', 'Erreur lors de l\'envoi de l\'email: ' . $mail->ErrorInfo);
+ }
+ }
+
+
+
private function send_confirmation_email($to_email, $prenom, $nom) {
$mail = new PHPMailer(true);
try {
@@ -166,6 +257,35 @@ class Utilisateur extends CI_Controller {
}
}
+ public function confirmer() {
+ $this->form_validation->set_rules('email', 'Email', 'required|valid_email');
+ $this->form_validation->set_rules('code', 'Code de confirmation', 'required|exact_length[6]');
+
+ if ($this->form_validation->run() == FALSE) {
+ $data['title'] = "Confirmation - Onzeur";
+ $data['css'] = "assets/css/confirmation";
+
+ $this->load->view('layout/header_dark', $data);
+ $this->load->view('confirmation');
+ $this->load->view('layout/footer_dark');
+ } else {
+ $email = $this->input->post('email');
+ $code = $this->input->post('code');
+
+ $user = $this->Utilisateur_model->get_user_by_email($email);
+ if ($user && $user['confirmation_code'] == $code && strtotime($user['code_sent_at']) > strtotime('-1 minute')) {
+ // Mettre à jour le statut de l'utilisateur pour confirmer l'inscription
+ $this->Utilisateur_model->confirm_user($email);
+ $this->session->set_flashdata('success', 'Votre inscription a été confirmée. Vous pouvez maintenant vous connecter.');
+ redirect('utilisateur/connexion');
+ } else {
+ $this->session->set_flashdata('error', 'Code de confirmation invalide ou expiré. Veuillez réessayer.');
+ redirect('utilisateur/confirmer');
+ }
+ }
+ }
+
+
public function ajouter_avis() {
if(!$this->session->userdata('user_id')) {
redirect('utilisateur/connexion');
@@ -394,16 +514,15 @@ class Utilisateur extends CI_Controller {
}
- public function connexion(){
+ public function connexion() {
// Définir les règles de validation
$this->form_validation->set_rules('email', 'Email', 'required|valid_email');
$this->form_validation->set_rules('password', 'Mot de passe', 'required');
if ($this->form_validation->run() == FALSE) {
-
- $data['title']="Connexion";
- $data['css']="assets/css/inscription";
-
+ $data['title'] = "Connexion";
+ $data['css'] = "assets/css/inscription";
+
// Charger la vue avec les erreurs
$this->load->view('layout/header_dark', $data);
$this->load->view('connexion');
@@ -417,29 +536,41 @@ class Utilisateur extends CI_Controller {
$user = $this->Utilisateur_model->get_user($email);
if ($user && password_verify($password, $user->password)) {
- // Connexion réussie, enregistrer l'utilisateur dans la session
- $this->session->set_userdata('user_id', $user->id);
- // Définir un cookie pour indiquer que l'utilisateur est connecté
- $cookie = array(
- 'name' => 'user_logged_in',
- 'value' => '1',
- 'expire' => '86500', // durée de vie du cookie (1 jour)
- 'secure' => TRUE
- );
- $this->input->set_cookie($cookie);
- redirect('utilisateur/dashboard');
+ // Vérifier si l'utilisateur a confirmé son compte
+ if ($user->is_confirmed) {
+ // Connexion réussie, enregistrer l'utilisateur dans la session
+ $this->session->set_userdata('user_id', $user->id);
+ // Définir un cookie pour indiquer que l'utilisateur est connecté
+ $cookie = array(
+ 'name' => 'user_logged_in',
+ 'value' => '1',
+ 'expire' => '86500', // durée de vie du cookie (1 jour)
+ 'secure' => TRUE
+ );
+ $this->input->set_cookie($cookie);
+ redirect('utilisateur/dashboard');
+ } else {
+ $data['error'] = 'Votre compte n\'a pas encore été confirmé. Veuillez nous contacter pour vérifier votre identitée. Cliquez ici pour nous contacter.';
+
+ $data['title'] = "Connexion";
+ $data['css'] = "assets/css/inscription";
+
+ $this->load->view('layout/header_dark', $data);
+ $this->load->view('connexion', $data);
+ $this->load->view('layout/footer_dark');
+ }
} else {
$data['error'] = 'Email ou mot de passe incorrect.';
- $data['title']="Connexion";
- $data['css']="assets/css/inscription";
+ $data['title'] = "Connexion";
+ $data['css'] = "assets/css/inscription";
- $this->load->view('layout/header_dark',$data);
+ $this->load->view('layout/header_dark', $data);
$this->load->view('connexion', $data);
$this->load->view('layout/footer_dark');
}
}
- }
+ }
public function deconnexion(){
// Détruire la session de l'utilisateur
diff --git a/CodeIgniter-3.1.13/application/models/Utilisateur_model.php b/CodeIgniter-3.1.13/application/models/Utilisateur_model.php
index f355dea..fe0e34e 100644
--- a/CodeIgniter-3.1.13/application/models/Utilisateur_model.php
+++ b/CodeIgniter-3.1.13/application/models/Utilisateur_model.php
@@ -12,15 +12,19 @@ class Utilisateur_model extends CI_Model {
return $this->db->insert('utilisateur', $data);
}
- public function get_user($email) {
- $query = $this->db->get_where('utilisateur', array('email' => $email));
- return $query->row();
+ public function confirm_user($email){
+ $this->db->where('email', $email);
+ return $this->db->update('utilisateur', array('is_confirmed' => 1, 'confirmation_code' => NULL, 'code_sent_at' => NULL));
}
- public function get_user_by_email($email) {
+ public function get_user($email) {
$this->db->where('email', $email);
- $query = $this->db->get('utilisateur'); // Assurez-vous que 'utilisateurs' est le nom de votre table d'utilisateurs
- return $query->row(); // Retourne le premier résultat
+ $query = $this->db->get('utilisateur');
+ return $query->row();
+ }
+
+ public function get_user_by_email($email){
+ return $this->db->get_where('utilisateur', array('email' => $email))->row_array();
}
public function get_user_by_id($id) {
@@ -65,6 +69,11 @@ class Utilisateur_model extends CI_Model {
public function supprimer_avis($avis_id) {
return $this->db->delete('avis', array('id' => $avis_id));
}
+
+ public function mettre_a_jour_code_confirmation($email, $nouveau_code) {
+ $this->db->where('email', $email);
+ return $this->db->update('utilisateur', array('confirmation_code' => $nouveau_code));
+ }
}
?>
diff --git a/CodeIgniter-3.1.13/application/views/confirmation.php b/CodeIgniter-3.1.13/application/views/confirmation.php
new file mode 100644
index 0000000..a299f7b
--- /dev/null
+++ b/CodeIgniter-3.1.13/application/views/confirmation.php
@@ -0,0 +1,23 @@
+Confirmation d'inscription
+session->flashdata('success')): ?>
+ session->flashdata('success'); ?>
+
+session->flashdata('error')): ?>
+ session->flashdata('error'); ?>
+
+
+ 'confirmation-form')); ?>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/CodeIgniter-3.1.13/assets/css/confirmation.css b/CodeIgniter-3.1.13/assets/css/confirmation.css
new file mode 100644
index 0000000..6483023
--- /dev/null
+++ b/CodeIgniter-3.1.13/assets/css/confirmation.css
@@ -0,0 +1,56 @@
+/* Styles pour le formulaire de confirmation d'inscription */
+
+/* Conteneur principal du formulaire */
+.confirmation-form {
+ max-width: 400px;
+ margin: 0 auto;
+ padding: 20px;
+ background-color: #f9f9f9;
+ border-radius: 8px;
+ box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);
+}
+
+/* Style des étiquettes */
+.confirmation-form label {
+ display: block;
+ margin-bottom: 5px;
+ font-weight: bold;
+}
+
+/* Style des champs de texte */
+.confirmation-form input[type="text"] {
+ width: 100%;
+ padding: 10px;
+ margin-bottom: 15px;
+ border: 1px solid #ccc;
+ border-radius: 5px;
+ box-sizing: border-box;
+}
+
+/* Style des boutons */
+.confirmation-form button {
+ display: inline-block;
+ padding: 10px 20px;
+ background-color: #8400ff;
+ color: #fff;
+ border: none;
+ border-radius: 5px;
+ cursor: pointer;
+ font-size: 16px;
+}
+
+.confirmation-form button:hover {
+ background-color: #6e00b3;
+}
+
+/* Style des messages d'erreur */
+.confirmation-error {
+ color: #ff0000;
+ margin-top: -10px;
+ margin-bottom: 10px;
+ text-align: center;
+}
+
+.confirmation-title {
+ text-align: center;
+}
\ No newline at end of file