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;
$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')];
$dVueEreur = [];
@ -44,9 +44,10 @@ Class FrontControler{
$router->map('GET|POST', '/unlog', 'UserControler','unlog');
$router->map('GET|POST', '/signin', 'VisitorControler','signin');
$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', '/supFav/[i:id]', 'UserControler','supFav');
$router->map('GET|POST', '/changedata', 'UserControler','changedata');
$match = $router->match();

@ -41,7 +41,7 @@ class UserControler {
public function profil() {
global $vues;
$p = $this->uMod->getUsername(Verification::verifChar($_SESSION["user"]));
$p = $this->uMod->getUsername($_SESSION["user"]);
require_once $vues['profil'];
}
@ -212,4 +212,47 @@ class UserControler {
$this->uMod->supFavorite(Verification::verifChar($_SESSION["user"]),$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();
}
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 =====================
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
$queryUpdate = 'UPDATE Users SET username=:newUsername WHERE id_user=:idUser';
$this->co->executeQuery($queryUpdate, array(':idUser'=>array($id, PDO::PARAM_STR), ':newUsername'=> array($newUsername, PDO::PARAM_STR)));
$queryUpdate = 'UPDATE Users SET username=:newUsername WHERE username=:username';
$this->co->executeQuery($queryUpdate, array(':username'=>array($username, PDO::PARAM_STR), ':newUsername'=> array($newUsername, PDO::PARAM_STR)));
//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
$queryUpdate = 'UPDATE Users SET email=:newEmail WHERE id_user=:idUser';
$this->co->executeQuery($queryUpdate, array(':idUser'=>array($id, PDO::PARAM_STR), ':newEmail'=> array($newEmail, PDO::PARAM_STR)));
$queryUpdate = 'UPDATE Users SET email=:newEmail WHERE username=:username';
$this->co->executeQuery($queryUpdate, array(':username'=>array($username, PDO::PARAM_STR), ':newEmail'=> array($newEmail, PDO::PARAM_STR)));
//Renvoie le nouveau email du user
$queryReponse = 'SELECT email FROM Users WHERE id_user=:idUser';
return $this->co->executeQuery($queryReponse, array(':idUser'=>array($id, PDO::PARAM_STR)));
$queryReponse = 'SELECT email FROM Users WHERE username=:username';
$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
$query = 'UPDATE Users SET img_prfl=:newImg WHERE id_user=:idUser';
$this->co->executeQuery($query, array(':idUser'=>array($id, PDO::PARAM_STR), ':newImg'=> array($newImg, PDO::PARAM_STR)));
$query = 'UPDATE Users SET img_prfl=:newImg WHERE username=:username';
$this->co->executeQuery($query, array(':username'=>array($username, PDO::PARAM_STR), ':newImg'=> array($newImg, PDO::PARAM_STR)));
//Renvoie la nouvelle image du user
$queryReponse = 'SELECT img_prfl FROM Users WHERE id_user=:idUser';
@ -124,12 +148,17 @@ Class UserGateway extends Gateway{
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
$query = 'UPDATE Users SET pssword=:newPassWd WHERE id_user=:idUser';
$this->co->executeQuery($query, array(':idUser'=>array($id, PDO::PARAM_STR), ':newPassWd'=> array($newPassWd, PDO::PARAM_STR)));
$query = 'UPDATE Users SET password=:newPassWd WHERE username=:username';
$this->co->executeQuery($query, array(':username'=>array($username, PDO::PARAM_STR), ':newPassWd'=> array($newPassWd, PDO::PARAM_STR)));
}
public function getIdUser(string $username):array{
$query = 'SELECT id_user FROM Users WHERE username=:username';
$this->co->executeQuery($query, array(':username'=>array($username, PDO::PARAM_STR)));

@ -76,39 +76,64 @@
return null;
}
public function setUsername(int $id, string $newUsername){
$res = $this->gateway->updateUsername($id,$newUsername);
$src[] = $res[0]['username'];
public function IsExisteUsername(string $username):bool{
return $this->gateway->IsExisteUsername($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;
}
public function getIdByUsername(string $username){
$res = $this->gateway->getIdUser($username);
return $res[0]['id_user'];
public function setPassWd(string $username, string $newPassWd):void{
$res = $this->gateway->updatePasswd($username,$newPassWd);
}
public function isFavorite(?string $username, int $idq): bool {
if($_SESSION["user"] == NULL){
return false;
@ -119,6 +144,7 @@
}
}
public function addFavorite(string $username, int $id){
$this->gateway->addFavorite($username,$id);
}
@ -126,6 +152,11 @@
public function supFavorite(string $username, int $id){
$this->gateway->supFavorite($username,$id);
}
public function getIdByUsername(string $username){
$res = $this->gateway->getIdUser($username);
return $res[0]['id_user'];
}
}
?>

Loading…
Cancel
Save