You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
SAE4.01_FORMULAIRE/Source/API/script/Gateway/GatewayAdmin.php

91 lines
2.6 KiB

<?php
namespace API\script\Gateway;
use Config\Connection;
use PDO;
/**
* Permet d'accéder, d'écrire ou de modifier les données contenues dans la table Admin afin de gérer l'espace administrateur.
*/
class GatewayAdmin
{
/**
* @var Connection
*/
private Connection $connection;
public function __construct()
{
$this->connection = connect();
}
/**
* Permet d'ajouter un administrateur dans la base de données.
*
* @param string $login Login du nouvel adimin
* @param string $hash Mot de passe au format hash du nouvel admin
*
* @return void
*/
public function addAdmin(string $login, string $hash): void
{
$query = "INSERT INTO Admin(login, hash) VALUES(:login, :hash)";
$this->connection->executeQuery($query, array(
':login' => array($login, PDO::PARAM_STR),
':hash' => array($hash, PDO::PARAM_STR)
));
}
/**
* Permet de récupérer le mot de passe en format hash du login passé en argument,
* afin de vérifier si la connection de l'utilisateur.
*
* @param string $login Login du coup duquel on veut récupérer le hash associé
*
* @return array
*/
public function getPassword(string $login): array
{
$query = 'SELECT Hash FROM Admin WHERE Login = :login';
$this->connection->executeQuery($query, array(
':login' => array($login, PDO::PARAM_STR)
));
return $this->connection->getResults();
}
/**
* Permet de changer le mot de passe de l'administrateur dont le login
* et le nouveau mot de passe au format hash est passé en argument.
*
* @param string $login Login dont on change le mot de passe
* @param string $hash Nouveau mot de passe au format hash
*
* @return void
*/
public function changePassword(string $login, string $hash): void
{
$query = "UPDATE Admin SET hash = :hash WHERE login = :login";
$this->connection->executeQuery($query, array(
':login' => array($login, PDO::PARAM_STR),
':hash' => array($hash, PDO::PARAM_STR)
));
}
/**
* Permet de supprimer un administrateur de la base de donnée par un login passé en paramètre.
*
* @param string $login Login du compte qui sera supprimé
*
* @return void
*/
public function deleteAdmin(string $login): void
{
$query = "DELETE FROM Admin WHERE login = :login";
$this->connection->executeQuery($query, array(
':login' => array($login, PDO::PARAM_STR)
));
}
}