120 lines
3.9 KiB
PHP
120 lines
3.9 KiB
PHP
<?php
|
|
require_once('mother_model.php');
|
|
|
|
|
|
/**
|
|
* Traitement des requêtes pour les utilisateurs
|
|
* @author : meilleurGroup
|
|
*/
|
|
|
|
class UserModel extends Connect{
|
|
|
|
public function __construct(){
|
|
parent::__construct();
|
|
}
|
|
|
|
/**
|
|
* Fonction de recherche des utilisateurs et leur niveau d'autorisation
|
|
* @return array
|
|
*/
|
|
public function findAllUsers():array{
|
|
$strRq = "SELECT user_id, user_firstname, user_name, user_image, user_status, authorisation_name
|
|
FROM users INNER JOIN authorisation ON authorisation.authorisation_id = users.user_status
|
|
WHERE user_deleted_at IS NULL";
|
|
return $this->_db->query($strRq)->fetchAll();
|
|
}
|
|
|
|
/**
|
|
* Fonction de vérification des utilisateurs
|
|
* @param string $strMail
|
|
* @param string $strPwd
|
|
* @return array|bool
|
|
*/
|
|
public function verifUser(string $strMail, string $strPwd):array|bool{
|
|
|
|
$strRq = "SELECT user_id, user_name, user_firstname, user_password, user_image, user_status, authorisation_name
|
|
FROM users INNER JOIN authorisation ON authorisation.authorisation_id = users.user_status
|
|
WHERE user_mail = '".$strMail."'";
|
|
|
|
$arrUser = $this->_db->query($strRq)->fetch();
|
|
if (password_verify($strPwd, $arrUser['user_password'])){
|
|
unset($arrUser['user_password']);
|
|
return $arrUser;
|
|
}else{
|
|
return false;
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Fonction d'insertion d'un utilisateur en BDD
|
|
* @param object $objUser L'objet utilisateur
|
|
* @return bool Est-ce que la requête s'est bien passée
|
|
*/
|
|
public function insert(object $objUser):bool{
|
|
|
|
$strRq = "INSERT INTO users (user_name, user_firstname, user_pseudo, user_mail, user_password, user_phone, user_work, user_location, user_description)
|
|
VALUES (:name, :firstname, :pseudo,:mail, :pwd, :phone, :work, :location,:description)";
|
|
|
|
$rqPrep = $this->_db->prepare($strRq);
|
|
|
|
$rqPrep->bindValue(":name", $objUser->getName(), PDO::PARAM_STR);
|
|
$rqPrep->bindValue(":firstname", $objUser->getFirstname(), PDO::PARAM_STR);
|
|
$rqPrep->bindValue(":pseudo", $objUser->getPseudo(), PDO::PARAM_STR);
|
|
$rqPrep->bindValue(":mail", $objUser->getMail(), PDO::PARAM_STR);
|
|
$rqPrep->bindValue(":pwd", $objUser->getPwdHash(), PDO::PARAM_STR);
|
|
$rqPrep->bindValue(':phone', $objUser->getPhone() ?? "", PDO::PARAM_STR);
|
|
$rqPrep->bindValue(':work', $objUser->getWork() ?? "", PDO::PARAM_STR);
|
|
$rqPrep->bindValue(':location', $objUser->getLocation() ?? "", PDO::PARAM_STR);
|
|
$rqPrep->bindValue(':description', $objUser->getDescription() ?? "", PDO::PARAM_STR);
|
|
|
|
return $rqPrep->execute();
|
|
}
|
|
|
|
/**
|
|
* Fonction de vérification de mail
|
|
* @param string $mail
|
|
* @return bool Est-ce que la requête s'est bien passée
|
|
*/
|
|
public function mailExists(string $mail): bool{
|
|
|
|
$rq = $this->_db->prepare("SELECT 1 FROM users WHERE user_mail = :mail LIMIT 1");
|
|
$rq->bindValue(":mail", $mail);
|
|
$rq->execute();
|
|
|
|
return (bool)$rq->fetchColumn();
|
|
}
|
|
|
|
/**
|
|
* Fonction de changement de status d'un utilisateur
|
|
* @param object $objUser L'objet utilisateur
|
|
* @return bool Est-ce que la requête s'est bien passée
|
|
*/
|
|
|
|
public function editStatus(object $objUser):bool{
|
|
|
|
$strRq = "UPDATE users
|
|
SET user_status = :status
|
|
WHERE user_id = :id";
|
|
|
|
$rqPrep = $this->_db->prepare($strRq);
|
|
$rqPrep->bindValue(":id", $objUser->getId(), PDO::PARAM_INT);
|
|
$rqPrep->bindValue(":status", $objUser->getStatus(), PDO::PARAM_INT);
|
|
return $rqPrep->execute();
|
|
}
|
|
|
|
/**
|
|
* Fonction permettant de supprimer un utilisateur avec une date de suppression
|
|
* @param int $intId L'identifiant de l'utilisateur
|
|
* @return bool Est-ce que la requête s'est bien passée
|
|
*/
|
|
public function delete_soft(int $intId):bool{
|
|
|
|
$strRq = "UPDATE users
|
|
SET user_deleted_at = NOW()
|
|
WHERE user_id = :id";
|
|
|
|
$rqPrep = $this->_db->prepare($strRq);
|
|
$rqPrep->bindValue(":id", $intId, PDO::PARAM_INT);
|
|
return $rqPrep->execute();
|
|
}
|
|
}
|