Modif info user sur page profil

pull/22/head^2
Leni BEAULATON 5 months ago
parent 78abe55775
commit 9ffb2a0636

@ -13,7 +13,7 @@ Class FrontControler{
global $twig,$racine; global $twig,$racine;
$this->listAction = ['visitor' => array('accueil','search','quote','login','signin','validlogin','validsignin'), $this->listAction = ['visitor' => array('accueil','search','quote','login','signin','validlogin','validsignin'),
'user' => array('quiz','commentary','logout','addComment','favorite','profil','addFav','supFav'), 'user' => array('quiz','commentary','logout','addComment','favorite','profil','addFav','supFav','changedata'),
'admin' => array('null')]; 'admin' => array('null')];
$dVueEreur = []; $dVueEreur = [];
@ -44,9 +44,10 @@ Class FrontControler{
$router->map('GET|POST', '/unlog', 'UserControler','unlog'); $router->map('GET|POST', '/unlog', 'UserControler','unlog');
$router->map('GET|POST', '/signin', 'VisitorControler','signin'); $router->map('GET|POST', '/signin', 'VisitorControler','signin');
$router->map('GET|POST', '/validlogin', 'VisitorControler','validlogin'); $router->map('GET|POST', '/validlogin', 'VisitorControler','validlogin');
$router->map('GET|POST', '/validsignin', 'VisitorControler','validsignin'); $router->map('GET|POST', '/validsignin', 'VisitorControler','validsignin');
$router->map('GET|POST', '/addFav/[i:id]', 'UserControler','addFav'); $router->map('GET|POST', '/addFav/[i:id]', 'UserControler','addFav');
$router->map('GET|POST', '/supFav/[i:id]', 'UserControler','supFav'); $router->map('GET|POST', '/supFav/[i:id]', 'UserControler','supFav');
$router->map('GET|POST', '/changedata', 'UserControler','changedata');
$match = $router->match(); $match = $router->match();

@ -41,7 +41,7 @@ class UserControler {
public function profil() { public function profil() {
global $vues; global $vues;
$p = $this->uMod->getUsername(Verification::verifChar($_SESSION["user"])); $p = $this->uMod->getUsername($_SESSION["user"]);
require_once $vues['profil']; require_once $vues['profil'];
} }
@ -212,4 +212,47 @@ class UserControler {
$this->uMod->supFavorite(Verification::verifChar($_SESSION["user"]),$id); $this->uMod->supFavorite(Verification::verifChar($_SESSION["user"]),$id);
header("Location:". $racine ."/quote/$id"); header("Location:". $racine ."/quote/$id");
} }
public function changedata() : void
{
global $vues;
if ($_POST)
{
$newPseudo = $_POST['pseudo'] ?? null;
$newEmail = $_POST['email'] ?? null;
$newMdpFirst = $_POST['passwdFirst'] ?? null;
$newMdpSecond = $_POST['passwdSecond'] ?? null;
//Modif le pseudo
if($newPseudo){
$user = $this-> uMod->setUsername($_SESSION['user'], $newPseudo);
if($user == $newPseudo){ //Si le pseudo existe déjà
$_SESSION['user'] = $newPseudo;
}
}
else if($newEmail){
$user = $this-> uMod->setEmail($_SESSION['user'], $newEmail);
}
else if($newMdpFirst && $newMdpSecond){
if($newMdpFirst == $newMdpSecond){
$option = ['cost' => 12];
$newPassWd = password_hash($newMdpFirst, PASSWORD_BCRYPT, $option);
$user = $this-> uMod->setPassWd($_SESSION['user'], $newPassWd);
}
}
}
header("Location: /~lebeaulato/WF-Website/profil");
}
} }

@ -89,33 +89,57 @@ Class UserGateway extends Gateway{
return $this->co->getResults(); return $this->co->getResults();
} }
public function IsExisteUsername(string $username): bool {
$query = 'SELECT COUNT(*) as count FROM Users WHERE username = :username';
$this->co->executeQuery($query, array(':username' => array($username, PDO::PARAM_STR)));
$results = $this->co->getResults();
return $results[0]['count'] > 0; // retourne true si "count" > 0)
}
public function IsExisteEmail(string $email): bool {
$query = 'SELECT COUNT(*) as count FROM Users WHERE email = :email';
$this->co->executeQuery($query, array(':email' => array($email, PDO::PARAM_STR)));
$results = $this->co->getResults();
return $results[0]['count'] > 0; // retourne true si "count" > 0)
}
// ===================== UPDATE FUNCTION ===================== // ===================== UPDATE FUNCTION =====================
public function updateUsername(int $id, string $newUsername):bool{ //Update Username
public function updateUsername(string $username, string $newUsername):array{
//Update le nom du user passé en paramètre //Update le nom du user passé en paramètre
$queryUpdate = 'UPDATE Users SET username=:newUsername WHERE id_user=:idUser'; $queryUpdate = 'UPDATE Users SET username=:newUsername WHERE username=:username';
$this->co->executeQuery($queryUpdate, array(':idUser'=>array($id, PDO::PARAM_STR), ':newUsername'=> array($newUsername, PDO::PARAM_STR))); $this->co->executeQuery($queryUpdate, array(':username'=>array($username, PDO::PARAM_STR), ':newUsername'=> array($newUsername, PDO::PARAM_STR)));
//Renvoie le nouveau nom du user //Renvoie le nouveau nom du user
$queryReponse = 'SELECT username FROM Users WHERE id_user=:idUser'; $queryReponse = 'SELECT username FROM Users WHERE username=:idUser';
return $this->co->executeQuery($queryReponse, array($id=>array($newUsername, PDO::PARAM_STR))); $this->co->executeQuery($queryReponse, array(':idUser'=>array($newUsername, PDO::PARAM_STR)));
return $this->co->getResults();
} }
public function updateEmail(int $id, string $newEmail):bool{
//Update Email
public function updateEmail(string $username, string $newEmail):array{
//Update le email du user passé en paramètre //Update le email du user passé en paramètre
$queryUpdate = 'UPDATE Users SET email=:newEmail WHERE id_user=:idUser'; $queryUpdate = 'UPDATE Users SET email=:newEmail WHERE username=:username';
$this->co->executeQuery($queryUpdate, array(':idUser'=>array($id, PDO::PARAM_STR), ':newEmail'=> array($newEmail, PDO::PARAM_STR))); $this->co->executeQuery($queryUpdate, array(':username'=>array($username, PDO::PARAM_STR), ':newEmail'=> array($newEmail, PDO::PARAM_STR)));
//Renvoie le nouveau email du user //Renvoie le nouveau email du user
$queryReponse = 'SELECT email FROM Users WHERE id_user=:idUser'; $queryReponse = 'SELECT email FROM Users WHERE username=:username';
return $this->co->executeQuery($queryReponse, array(':idUser'=>array($id, PDO::PARAM_STR)));
$this->co->executeQuery($queryReponse, array(':username'=>array($username, PDO::PARAM_STR)));
return $this->co->getResults();
} }
public function updateImg(int $id, int $newImg):array{
public function updateImg(string $username, int $newImg):array{
//Update l'image du user passé en paramètre //Update l'image du user passé en paramètre
$query = 'UPDATE Users SET img_prfl=:newImg WHERE id_user=:idUser'; $query = 'UPDATE Users SET img_prfl=:newImg WHERE username=:username';
$this->co->executeQuery($query, array(':idUser'=>array($id, PDO::PARAM_STR), ':newImg'=> array($newImg, PDO::PARAM_STR))); $this->co->executeQuery($query, array(':username'=>array($username, PDO::PARAM_STR), ':newImg'=> array($newImg, PDO::PARAM_STR)));
//Renvoie la nouvelle image du user //Renvoie la nouvelle image du user
$queryReponse = 'SELECT img_prfl FROM Users WHERE id_user=:idUser'; $queryReponse = 'SELECT img_prfl FROM Users WHERE id_user=:idUser';
@ -124,12 +148,17 @@ Class UserGateway extends Gateway{
return $result; return $result;
} }
public function updatePasswd(int $id, string $newPassWd):array{
public function updatePasswd(string $username, string $newPassWd):void{
//Update le passwd du user passé en paramètre //Update le passwd du user passé en paramètre
$query = 'UPDATE Users SET pssword=:newPassWd WHERE id_user=:idUser'; $query = 'UPDATE Users SET password=:newPassWd WHERE username=:username';
$this->co->executeQuery($query, array(':idUser'=>array($id, PDO::PARAM_STR), ':newPassWd'=> array($newPassWd, PDO::PARAM_STR))); $this->co->executeQuery($query, array(':username'=>array($username, PDO::PARAM_STR), ':newPassWd'=> array($newPassWd, PDO::PARAM_STR)));
} }
public function getIdUser(string $username):array{ public function getIdUser(string $username):array{
$query = 'SELECT id_user FROM Users WHERE username=:username'; $query = 'SELECT id_user FROM Users WHERE username=:username';
$this->co->executeQuery($query, array(':username'=>array($username, PDO::PARAM_STR))); $this->co->executeQuery($query, array(':username'=>array($username, PDO::PARAM_STR)));

@ -76,39 +76,64 @@
return null; return null;
} }
public function setUsername(int $id, string $newUsername){ public function IsExisteUsername(string $username):bool{
$res = $this->gateway->updateUsername($id,$newUsername); return $this->gateway->IsExisteUsername($username);
$src[] = $res[0]['username']; }
return $src; public function IsExisteEmail(string $email):bool{
return $this->gateway->IsExisteEmail($email);
} }
public function setEmail(int $id, string $newEmail){
$res = $this->gateway->updateEmail($id,$newEmail);
$src[] = $res[0]['email'];
return $src; public function setUsername(string $username, string $newUsername): string {
if ($this->IsExisteUsername($newUsername)) {// Vérifier si le nouveau nom d'utilisateur existe déjà
return $username;// Retourne l'ancien nom d'utilisateur sans modification
}
$res = $this->gateway->updateUsername($username, $newUsername);// Sinon, mettre à jour le nom d'utilisateur
// Retourner le nouveau nom d'utilisateur après modification
if (!empty($res) && isset($res[0]['username'])) {
return $res[0]['username'];
}
// En cas d'échec, retourne l'ancien nom d'utilisateur
return $username;
} }
public function setImg(int $id, int $newImg){
$res = $this->gateway->updateImg($id,$newImg);
$src[] = $res[0]['img'];
return $src;
public function setEmail(string $username, string $newEmail){
if ($this->IsExisteEmail($newEmail)) {
return $email;
}
$res = $this->gateway->updateEmail($username,$newEmail);
if (!empty($res) && isset($res[0]['email'])) {
return $res[0]['email'];
}
return $username;// En cas d'échec, retourne l'ancien email
} }
public function setPassWd(int $id, string $newPassWd){
$res = $this->gateway->updatePasswd($id,$newPassWd);
$src[] = $res[0]['pssword'];
public function setImg(string $username, int $newImg){
$res = $this->gateway->updateImg($id,$newImg);
$src[] = $res[0]['img'];
return $src; return $src;
} }
public function getIdByUsername(string $username){ public function setPassWd(string $username, string $newPassWd):void{
$res = $this->gateway->getIdUser($username); $res = $this->gateway->updatePasswd($username,$newPassWd);
return $res[0]['id_user'];
} }
public function isFavorite(?string $username, int $idq): bool { public function isFavorite(?string $username, int $idq): bool {
if($_SESSION["user"] == NULL){ if($_SESSION["user"] == NULL){
return false; return false;
@ -119,6 +144,7 @@
} }
} }
public function addFavorite(string $username, int $id){ public function addFavorite(string $username, int $id){
$this->gateway->addFavorite($username,$id); $this->gateway->addFavorite($username,$id);
} }
@ -126,6 +152,11 @@
public function supFavorite(string $username, int $id){ public function supFavorite(string $username, int $id){
$this->gateway->supFavorite($username,$id); $this->gateway->supFavorite($username,$id);
} }
public function getIdByUsername(string $username){
$res = $this->gateway->getIdUser($username);
return $res[0]['id_user'];
}
} }
?> ?>

Loading…
Cancel
Save