mirror of
https://grond.iut-fbleau.fr/stiti/SAE_2.02
synced 2024-12-27 01:12:18 +01:00
Commit de Marco : Ajout de messages de confirmations
This commit is contained in:
parent
06a5d409ff
commit
50667d57ac
@ -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';
|
||||
|
||||
|
||||
|
@ -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,33 +28,29 @@ 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);
|
||||
$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";
|
||||
|
||||
@ -66,6 +61,102 @@ class Utilisateur extends CI_Controller {
|
||||
}
|
||||
}
|
||||
|
||||
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 = '
|
||||
<!DOCTYPE html>
|
||||
<html lang="fr">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<style>
|
||||
body {
|
||||
font-family: Arial, sans-serif;
|
||||
background-color: #f4f4f4;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
.container {
|
||||
width: 80%;
|
||||
margin: 0 auto;
|
||||
background-color: #fff;
|
||||
padding: 20px;
|
||||
box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);
|
||||
}
|
||||
.header {
|
||||
text-align: center;
|
||||
padding: 20px;
|
||||
}
|
||||
.header img {
|
||||
max-width: 150px;
|
||||
}
|
||||
.content {
|
||||
margin-top: 20px;
|
||||
}
|
||||
.content h1 {
|
||||
color: #333;
|
||||
}
|
||||
.content p {
|
||||
font-size: 16px;
|
||||
line-height: 1.6;
|
||||
color: #666;
|
||||
}
|
||||
.footer {
|
||||
margin-top: 20px;
|
||||
text-align: center;
|
||||
font-size: 14px;
|
||||
color: #999;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="container">
|
||||
<div class="header">
|
||||
<img src="'.base_url('assets/img/Logo_ONZEUR_LIGHT.png').'" alt="Logo Onzeur">
|
||||
</div>
|
||||
<div class="content">
|
||||
<h1>Bonjour, '.$prenom.' '.$nom.' !</h1>
|
||||
<p>Merci de vous être inscrit sur Onzeur. Pour finaliser votre inscription, veuillez utiliser le code de confirmation suivant :</p>
|
||||
<p><strong>Code de confirmation : '.$code.'</strong></p>
|
||||
<p>Ce code est valable pendant 1 minute.</p>
|
||||
<p>Si vous n\'avez pas demandé cette inscription, veuillez ignorer cet email.</p>
|
||||
<p>Cordialement,<br>L\'équipe Onzeur</p>
|
||||
</div>
|
||||
<div class="footer">
|
||||
© '.date("Y").' Onzeur. Tous droits réservés.
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>';
|
||||
|
||||
$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');
|
||||
@ -400,7 +520,6 @@ class Utilisateur extends CI_Controller {
|
||||
$this->form_validation->set_rules('password', 'Mot de passe', 'required');
|
||||
|
||||
if ($this->form_validation->run() == FALSE) {
|
||||
|
||||
$data['title'] = "Connexion";
|
||||
$data['css'] = "assets/css/inscription";
|
||||
|
||||
@ -417,6 +536,8 @@ class Utilisateur extends CI_Controller {
|
||||
$user = $this->Utilisateur_model->get_user($email);
|
||||
|
||||
if ($user && password_verify($password, $user->password)) {
|
||||
// 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é
|
||||
@ -428,6 +549,16 @@ class Utilisateur extends CI_Controller {
|
||||
);
|
||||
$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. <a href="' . base_url('index.php/contact/index') . '">Cliquez ici pour nous contacter</a>.';
|
||||
|
||||
$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.';
|
||||
|
||||
|
@ -12,15 +12,19 @@ class Utilisateur_model extends CI_Model {
|
||||
return $this->db->insert('utilisateur', $data);
|
||||
}
|
||||
|
||||
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($email) {
|
||||
$query = $this->db->get_where('utilisateur', array('email' => $email));
|
||||
$this->db->where('email', $email);
|
||||
$query = $this->db->get('utilisateur');
|
||||
return $query->row();
|
||||
}
|
||||
|
||||
public function get_user_by_email($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
|
||||
return $this->db->get_where('utilisateur', array('email' => $email))->row_array();
|
||||
}
|
||||
|
||||
public function get_user_by_id($id) {
|
||||
@ -66,5 +70,10 @@ class Utilisateur_model extends CI_Model {
|
||||
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));
|
||||
}
|
||||
|
||||
}
|
||||
?>
|
||||
|
23
CodeIgniter-3.1.13/application/views/confirmation.php
Normal file
23
CodeIgniter-3.1.13/application/views/confirmation.php
Normal file
@ -0,0 +1,23 @@
|
||||
<h1 class="confirmation-title">Confirmation d'inscription</h1>
|
||||
<?php if ($this->session->flashdata('success')): ?>
|
||||
<p class="confirmation-error"><?php echo $this->session->flashdata('success'); ?></p>
|
||||
<?php endif; ?>
|
||||
<?php if ($this->session->flashdata('error')): ?>
|
||||
<p class="confirmation-error"><?php echo $this->session->flashdata('error'); ?></p>
|
||||
<?php endif; ?>
|
||||
|
||||
<?php echo form_open('utilisateur/confirmer', array('class' => 'confirmation-form')); ?>
|
||||
<div>
|
||||
<label for="email">Email</label>
|
||||
<input type="text" name="email" value="<?php echo set_value('email'); ?>">
|
||||
<?php echo form_error('email'); ?>
|
||||
</div>
|
||||
<div>
|
||||
<label for="code">Code de confirmation</label>
|
||||
<input type="text" name="code" value="<?php echo set_value('code'); ?>">
|
||||
<?php echo form_error('code'); ?>
|
||||
</div>
|
||||
<div>
|
||||
<button type="submit">Confirmer</button>
|
||||
</div>
|
||||
<?php echo form_close(); ?>
|
56
CodeIgniter-3.1.13/assets/css/confirmation.css
Normal file
56
CodeIgniter-3.1.13/assets/css/confirmation.css
Normal file
@ -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;
|
||||
}
|
Loading…
Reference in New Issue
Block a user