/** * Fonction servant à activer un nouvel utilisateur à l'aide de son code d'activation fourni dans l'url. * Si le code n'existe pas, il envoie un message d'erreur, sinon il active le membre et le redirige vers la page de connexion. */ function activationNewUser() { $code = $_GET['code']; $am = new ActivationManager(connexionDb()); $ac = $am->getActivationByCode($code); $noCode = false; if ($ac->getCode() == NULL) { $noCode = true; } if ($noCode) { echo "Votre code est incorrect, utilisez celui du mail prévu à cet effet !"; } else { $am->deleteActivation($ac); echo "Vous êtes dorénavant activé, vous pouvez vous connecter normalement !"; echo "<meta http-equiv='refresh' content='2; URL=connexion.page.php'>"; } }
/** * Fonction ajoutant en BDD le nouveau membre inscrit et lui envoyant un message contenant son code d'activation * d'inscription. */ function addDB() { $userToAdd = new User(array("UserName" => $_POST['userName'], "email" => $_POST['email'], "Mdp" => $_POST['mdp'])); $code_aleatoire = genererCode(); $adresseAdmin = "*****@*****.**"; $to = $userToAdd->getEmail(); $sujet = "Confirmation de l'inscription"; $entete = "From:" . $adresseAdmin . "\r\n"; $entete .= "Content-Type: text/html; charset=utf-8\r\n"; $message = "Nous confirmons que vous êtes officiellement inscrit sur le site EveryDayIdea <br>\n\t\t\t\t\t\t\t\t\tVotre login est : " . $userToAdd->getUserName() . " <br>\n\t\t\t\t\t\t\t\t\tVotre email est : " . $userToAdd->getEmail() . " <br>\n\t\t\t\t\t\t\t\t\tVotre lien d'activation est : <a href='http://www.everydayidea.be/Page/activationInscription.page.php?code=" . $code_aleatoire . "'>Cliquez ici !</a>"; mail($to, $sujet, $message, $entete); /** @var $um : un nouvel user qui va être ajouté à la BDD J'ajoute le nouvel user à la BDD*/ $um = new UserManager(connexionDb()); $um->addUser($userToAdd); /** * Ici j'ai besoin de savoir quel est le user id du nouveau membre ajouté pour pouvoir le mettre dans l'ajout du code d'activation de cet user * Donc je vais le rechercher en base de donnée où il vient d'être ajouté */ $user = $um->getUserByUserName($userToAdd->getUserName()); $userid = $user->getId(); $um->setUserDroit($user, 4); /** * J'ajoute le nouveau code d'activation à la BDD */ $am = new ActivationManager(connexionDb()); $activation = new Activation(array("code" => $code_aleatoire, "id_user" => $userid, "libelle" => "Inscription")); $am->addActivation($activation); }
/** * Si le user a rempli le formulaire de changement de mdp, la fonction regarde si le login correspond au user * possédant ce code d'activation et si cela est vrai, il change son mdp en bdd et delete son code d'activation en BDD */ function changementMdp() { if (isset($_POST['userName']) && isset($_POST['mdp']) && $_POST['mdp'] == $_POST['verifmdp'] && goodCode()) { $code = $_GET['code']; $mdp = $_POST['mdp']; $userName = $_POST['userName']; $am = new ActivationManager(connexionDb()); $ac = $am->getActivationByCodeAndLibelle("Récupération", $code); $userId = $ac->getIdUser(); $um = new UserManager(connexionDb()); /** * Je récupère cet user grâce à l'id du user possédant le code d'acti */ $userRecup = $um->getUserById($userId); /** * Je récupère l'autre user grâce au login qu'il a encodé dans le formulaire */ $userTest = $um->getUserByUserName($userName); /** * Je compare les deux users pour voir si ce sont les mêmes */ if ($userTest->getUserName() != $userRecup->getUserName()) { echo "<section class='row'>"; echo "<br><br><br><br><br><br><br><br><br><br><br><br><div class='alert alert-danger' role='alert'>Votre nom d'utilisateur ne correspond pas à l'utilisateur possédant ce code d'activation !</div>"; echo "</section>"; } else { $userRecup->setMdp($mdp); $am->deleteActivation($ac); $um->updateUserMdp($userRecup); echo "<br><br><br><br><br><br><br><br><br><br><br><br><div class='alert alert-success' role='success'>Votre mot de passe a bien été modifié, vous pouvez vous connecter !</div>"; echo "<meta http-equiv='refresh' content='2; URL=connexion.page.php'>"; } } }
/** * Fonction vérifiant l'identité du membre et le connectant si il possède la bonne identité. * @return array : tableau de message d'erreur dans le cas où ses informations sont fausses, si il est banni ou encore * si il ne s'est pas activé. */ function doConnect() { $tabRetour = array(); $mdp = $_POST['mdp']; $userName = $_POST['userName']; $manager = new UserManager(connexionDb()); $tabUser = $manager->getAllUser(); $userToConnect = new User(array("UserName" => $userName, "Mdp" => $mdp)); $userFound = $manager->getUserByUserName($userName); /** * Je vérifie sur le user est dans la base de donnée et existe bel et bien */ $echec = false; if ($userFound->getId() != NULL) { foreach ($tabUser as $elem) { //$mdp == hash("sha256", $elem->getMdp()); //password_verify($mdp, $elem->getMdp()) if ($userName == $elem->getUserName() && hash("sha256", $userToConnect->getMdp() . $userFound->getSalt()) == $elem->getMdp()) { $echec = false; $userToConnect = $elem; $id = $elem->getId(); break; } else { $echec = true; } } } else { $echec = true; } /** * Je vérifie que le user n'a pas besoin de s'activer avant de se connecter, l'user pouvant avoir * deux code (inscription et mdp oublié), je vérifie que c'est bien le code d'inscription */ $needActi = false; $banni = false; if (isset($id)) { $acManager = new ActivationManager(connexionDb()); $act = $acManager->getActivationByLibelleAndId("Inscription", $id); if (isset($act) && $act->getCode() != NULL) { $needActi = true; } else { $needActi = false; } } $userToConnect = $manager->getUserById($userToConnect->getId()); if ($echec == true) { $tabRetour['Error'] = "<div class='alert alert-danger' role='alert'>Erreur lors de la connexion, veuillez rééssayer avec le bon login ou mot de passe !</div>"; } else { if ($userToConnect->getDroit()[0]->getId() == 6) { $tabRetour['Error'] = "<div class='alert alert-danger' role='alert'>Vous êtes banni, impossible de vous connecter !</div>"; $banni = true; } else { if ($needActi == true) { $tabRetour['Activation'] = "<div class='alert alert-danger' role='alert'>Vous devez activer votre compte avant la connexion !</div>"; } else { $user = $manager->getUserById($id); $manager->updateUserConnect($user); //$_SESSION['User'] = $user; setSessionUser($user); echo "Bienvenue sur EveryDayIdea !"; } } } $tabRetour['Retour'] = !$echec; $tabRetour['Valide'] = !$needActi; $tabRetour['Banni'] = !$banni; return $tabRetour; }