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(){ // 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'); $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) { // Charger la vue avec les erreurs $this->load->view('layout/header_dark'); $this->load->view('inscription'); $this->load->view('layout/footer_dark'); } else { // Récupérer les données du formulaire $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 ); // 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'); } else { $data['error'] = 'Une erreur est survenue. Veuillez réessayer.'; $this->load->view('layout/header_dark'); $this->load->view('inscription', $data); $this->load->view('layout/footer_dark'); } } } 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 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)) { $this->session->set_flashdata('success', 'Avis ajouté avec succès.'); } else { $this->session->set_flashdata('error', 'Une erreur est survenue. Veuillez réessayer.'); } redirect('/'); } } 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) { // Charger la vue avec les erreurs $this->load->view('layout/header_dark'); $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)) { // 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'] = 'Email ou mot de passe incorrect.'; $this->load->view('layout/header_dark'); $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); $this->load->view('layout/header_dark'); $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'); $data = array( 'email' => $this->input->post('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.'; } 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); $this->load->view('layout/header_dark'); $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); $this->load->view('layout/header_dark'); $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('/'); } }