load->helper(array('form', 'url', 'cookie')); $this->load->library(array('form_validation', 'session')); $this->load->model('Utilisateur_model'); $this->load->helper('html'); } public function inscription(){ $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'); $this->form_validation->set_rules('password', 'Mot de passe', 'required|min_length[8]|max_length[64]', array( 'min_length' => 'Le {field} doit contenir au moins {param} caractères.', 'max_length' => 'Le {field} ne doit pas dépasser {param} caractères.' )); if ($this->form_validation->run() == FALSE) { $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 { $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), 'confirmation_code' => $code, 'code_sent_at' => date('Y-m-d H:i:s') ); if ($this->Utilisateur_model->insert_user($data)) { $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); $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 = '
Logo Onzeur

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 { // 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 = 'Bienvenue sur Onzeur !'; $mail_body = '
Logo Onzeur

Bienvenue, '.$prenom.' '.$nom.' !

Nous vous remercions de vous être inscrit sur Onzeur. Nous sommes ravis de vous compter parmi nos membres.

Onzeur est une plateforme dédiée à la création de playlist musical. Nous espérons que vous apprécierez votre expérience avec nous.

Voici quelques ressources pour vous aider à démarrer :

Si vous avez des questions ou avez besoin d\'aide, n\'hésitez pas à nous contacter.

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); } } 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'); } $this->form_validation->set_rules('commentaire', 'Commentaire', 'required'); $this->form_validation->set_rules('notation', 'Notation', 'required'); if ($this->form_validation->run() == FALSE) { redirect('/'); } else { $data = array( 'utilisateur_id' => $this->session->userdata('user_id'), 'commentaire' => $this->input->post('commentaire'), 'notation' => $this->input->post('notation') // Récupérer la valeur de notation depuis le champ caché ); if ($this->Utilisateur_model->insert_avis($data)) { // Envoyer un email en fonction de la note $notation = intval($this->input->post('notation')); if ($notation >= 1 && $notation <= 3) { // Envoyer un email d'excuse $user = $this->Utilisateur_model->get_user_by_id($this->session->userdata('user_id')); $this->send_excuse_email($user->email, $user->prenom, $user->nom); } elseif ($notation >= 4 && $notation <= 5) { // Envoyer un email de remerciement $user = $this->Utilisateur_model->get_user_by_id($this->session->userdata('user_id')); $this->send_thank_you_email($user->email, $user->prenom, $user->nom); } $this->session->set_flashdata('success', 'Avis ajouté avec succès.'); } else { $this->session->set_flashdata('error', 'Une erreur est survenue. Veuillez réessayer.'); } redirect('/'); } } private function send_excuse_email($to_email, $prenom, $nom) { $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 = 'Retours sur votre mauvaise experience sur Onzeur.'; $mail_body = '
Logo Onzeur

Désolé, '.$prenom.' '.$nom.' !

Nous sommes désolés de constater que votre expérience sur Onzeur n\'a pas été à la hauteur de vos attentes.

Nous prenons en compte vos retours et nous nous efforçons constamment d\'améliorer notre plateforme pour mieux vous servir.

Nous espérons avoir l\'occasion de vous satisfaire pleinement à l\'avenir.

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_thank_you_email($to_email, $prenom, $nom) { $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 = 'Merci de votre avis sur Onzeur !'; $mail_body = '
Logo Onzeur

Merci, '.$prenom.' '.$nom.' !

Nous vous remercions d\'avoir pris le temps de laisser votre avis sur Onzeur. Votre contribution est très précieuse pour nous.

Nous prenons en compte vos retours et nous nous efforçons constamment d\'améliorer notre plateforme pour mieux vous servir.

N\'hésitez pas à continuer à partager vos impressions avec nous.

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); } } 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"; // Charger la vue avec les erreurs $this->load->view('layout/header_dark', $data); $this->load->view('connexion'); $this->load->view('layout/footer_dark'); } else { // Récupérer les données du formulaire $email = $this->input->post('email'); $password = $this->input->post('password'); // Vérifier les informations d'identification dans la base de données $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é $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"; $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 $this->session->unset_userdata('user_id'); $this->session->sess_destroy(); // Supprimer le cookie delete_cookie('user_logged_in'); // Rediriger vers la page de connexion redirect('utilisateur/connexion'); } public function dashboard() { if(!$this->session->userdata('user_id')){ redirect('utilisateur/connexion'); } $user_id = $this->session->userdata('user_id'); $data['user'] = $this->Utilisateur_model->get_user_by_id($user_id); $data['avis'] = $this->Utilisateur_model->get_avis_by_user($user_id); $data['title']="Dashboard - Onzeur"; $data['css']="assets/css/dashboard"; $this->load->view('layout/header_dark', $data); $this->load->view('dashboard', $data); $this->load->view('layout/footer_dark'); } public function modifier() { if (!$this->session->userdata('user_id')) { redirect('utilisateur/connexion'); } $this->form_validation->set_rules('email', 'Email', 'required|valid_email'); $this->form_validation->set_rules('nom', 'Nom', 'required'); $this->form_validation->set_rules('prenom', 'Prénom', 'required'); if ($this->form_validation->run() == FALSE) { $this->dashboard(); } else { $user_id = $this->session->userdata('user_id'); $new_email = $this->input->post('email'); // Vérifie si l'email est déjà utilisé par un autre utilisateur $existing_user = $this->Utilisateur_model->get_user_by_email($new_email); if ($existing_user && isset($existing_user['id']) && $existing_user['id'] != $user_id) { $data['error'] = 'Cet email est déjà utilisé par un autre utilisateur.'; $data['user'] = $this->Utilisateur_model->get_user_by_id($user_id); $data['avis'] = $this->Utilisateur_model->get_avis_by_user($user_id); $data['title'] = "Dashboard - Onzeur"; $data['css'] = "assets/css/dashboard"; $this->load->view('layout/header_dark', $data); $this->load->view('dashboard', $data); $this->load->view('layout/footer_dark'); return; // Sortie de la méthode } $data = array( 'email' => $new_email, 'nom' => $this->input->post('nom'), 'prenom' => $this->input->post('prenom') ); if ($this->Utilisateur_model->update_user($user_id, $data)) { $data['success'] = 'Informations mises à jour avec succès.'; $this->send_confirmation_email_modification($data['email'], $data['prenom'], $data['nom']); } else { $data['error'] = 'Une erreur est survenue. Veuillez réessayer.'; } // Récupérer à nouveau les données d'avis pour cet utilisateur $data['user'] = $this->Utilisateur_model->get_user_by_id($user_id); $data['avis'] = $this->Utilisateur_model->get_avis_by_user($user_id); $data['title'] = "Dashboard - Onzeur"; $data['css'] = "assets/css/dashboard"; $this->load->view('layout/header_dark', $data); $this->load->view('dashboard', $data); $this->load->view('layout/footer_dark'); } } public function modifier_mot_de_passe() { if (!$this->session->userdata('user_id')) { redirect('utilisateur/connexion'); } $this->form_validation->set_rules('ancien_password', 'Ancien mot de passe', 'required'); $this->form_validation->set_rules('nouveau_password', 'Nouveau mot de passe', 'required|min_length[8]'); $this->form_validation->set_rules('confirmer_password', 'Confirmer le nouveau mot de passe', 'required|matches[nouveau_password]'); if ($this->form_validation->run() == FALSE) { $this->dashboard(); } else { $user_id = $this->session->userdata('user_id'); $user = $this->Utilisateur_model->get_user_by_id($user_id); if (password_verify($this->input->post('ancien_password'), $user->password)) { $data = array( 'password' => password_hash($this->input->post('nouveau_password'), PASSWORD_DEFAULT) ); if ($this->Utilisateur_model->update_user($user_id, $data)) { $data['success'] = 'Mot de passe mis à jour avec succès.'; } else { $data['error'] = 'Une erreur est survenue. Veuillez réessayer.'; } } else { $data['error'] = 'L\'ancien mot de passe est incorrect.'; } $data['user'] = $this->Utilisateur_model->get_user_by_id($user_id); $data['title']="Dashboard - Onzeur"; $data['css']="assets/css/dashboard"; $this->load->view('layout/header_dark', $data); $this->load->view('dashboard', $data); $this->load->view('layout/footer_dark'); } } // Suppression d'avis public function supprimer_avis_dashboard($id) { if (!$this->session->userdata('user_id')) { redirect('utilisateur/connexion'); } $this->load->model('Utilisateur_model'); $this->Utilisateur_model->supprimer_avis($id); redirect('utilisateur/dashboard'); } public function supprimer_avis_accueil($id) { if (!$this->session->userdata('user_id')) { redirect('utilisateur/connexion'); } $this->load->model('Utilisateur_model'); $this->Utilisateur_model->supprimer_avis($id); redirect('/'); } public function non_autorisee(){ $data['title']="Accès non autorisé - Onzeur"; $data['css']="assets/css/style.css"; $this->load->view('layout/header_dark', $data); $this->load->view('non_autorisee'); $this->load->view('layout/footer_dark'); } public function send_confirmation_email_modification($to_email, $prenom, $nom) { $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'e-mail $mail->isHTML(true); $mail->Subject = 'Modification de vos informations sur Onzeur'; $mail_body = '
Logo Onzeur

Modification de vos informations

Vos informations personnelles ont été modifiées avec succès sur Onzeur.

Voici les informations mises à jour :

Si vous n\'êtes pas à l\'origine de cette modification, veuillez nous contacter immédiatement.

Cordialement,
L\'équipe Onzeur

'; $mail->Body = $mail_body; $mail->send(); } catch (Exception $e) { log_message('error', 'Erreur lors de l\'envoi de l\'e-mail: ' . $mail->ErrorInfo); } } }