correction du merge avecv login
continuous-integration/drone/push Build is passing Details

interestingProfiles
Johan LACHENAL 2 years ago
parent 88aa7f88e7
commit 0cbe16a3c1

@ -21,71 +21,20 @@ class GatewayAdmin
} }
/** /**
* Permet d'ajouter un administrateur dans la base de données. * Permet de récupérer le mot de passe de l'administrateur en fonction de son login.
* * @param String $login Le login de l'administrateur.
* @param string $login Login du nouvel adimin * @return String|null Le mot de passe de l'administrateur ou null si l'administrateur n'existe pas.
* @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(); public function getPasswordWithLogin(String $login)
}
/**
* 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"; $query = "SELECT password FROM ADMIN WHERE login = :login";
$this->connection->executeQuery($query, array( $this->connection->executeQuery($query, array(
':login' => array($login, PDO::PARAM_STR) ':login' => array($login, PDO::PARAM_STR)
)); ));
$result = $this->connection->getResults();
if(empty($result))
return null;
return $result[0]['password'];
} }
} }

@ -14,7 +14,7 @@ class Autoload
self::$instance = new self(); self::$instance = new self();
if (!spl_autoload_register(array(self::$instance, 'autoloader'), false)) { if (!spl_autoload_register(array(self::$instance, 'autoloader'))) {
throw RuntimeException(sprintf('%s : Could not start the autoload', __CLASS__)); throw RuntimeException(sprintf('%s : Could not start the autoload', __CLASS__));
} }
} }

@ -26,10 +26,10 @@ class Validate
* @return bool Vrai si le pseudo est valide, faux sinon. * @return bool Vrai si le pseudo est valide, faux sinon.
*/ */
public static function pseudo(string $pseudo) : bool public static function login(string $login) : bool
{ {
global $pseudoMaxLength; global $loginMaxLength;
return (strlen($pseudo) >= 3 && preg_match("#[a-zA-Z0-9]+#", $pseudo) && strlen($pseudo) <= $pseudoMaxLength); return (strlen($login) >= 3 && preg_match("#[a-zA-Z0-9]+#", $login) && strlen($login) <= $loginMaxLength);
} }
/** /**

@ -45,8 +45,7 @@ function connect()
return $connection; return $connection;
} }
$emailMaxLength=150; $loginMaxLength=50;
$pseudoMaxLength=50;
$passwordMaxLength=500; $passwordMaxLength=500;
$keyWordMaxLength=50; $keyWordMaxLength=50;
$titleMaxLength=50; $titleMaxLength=50;

@ -45,7 +45,7 @@ class ControllerCandidate
$model= new ModelCandidate(); $model= new ModelCandidate();
$model->login(); $model->login();
if($_SESSION['role'] == "Admin") { if($_SESSION['role'] == "Admin") {
require_once($rep . $views['validLogin']); require_once($rep . $views['admin']);
} }
else else
{ {

@ -4,7 +4,7 @@ namespace Exceptions;
use Exception; use Exception;
class InexistantIdentifierException extends Exception class InexistantLoginException extends Exception
{ {
public function __construct() public function __construct()
{ {

@ -3,7 +3,7 @@
namespace Exceptions; namespace Exceptions;
use Exception; use Exception;
class InvalidIdentifierOrPasswordException extends Exception class InvalidLoginOrPasswordException extends Exception
{ {
public function __construct() public function __construct()
{ {

@ -9,8 +9,8 @@ use API\script\Gateway\GatewayAdmin;
use Config\Clean; use Config\Clean;
use Config\Validate; use Config\Validate;
use Exceptions\InvalidUsernameOrPasswordException; use Exceptions\InvalidUsernameOrPasswordException;
use Exceptions\InvalidIdentifierOrPasswordException; use Exceptions\InvalidLoginOrPasswordException;
use Exceptions\InexistantIdentifierException; use Exceptions\InexistantLoginException;
/** /**
* Permet de développer les fonctions appelées par le controllerCandidate pour gérer * Permet de développer les fonctions appelées par le controllerCandidate pour gérer
@ -123,11 +123,11 @@ class ModelCandidate
public function login() :void { public function login() :void {
global $rep,$views,$sel; global $rep,$views,$sel;
$password = Clean::simpleString($_REQUEST['password']); $password = Clean::simpleString($_REQUEST['password']);
$identifiant = Clean::simpleString($_REQUEST['identifier']); $identifiant = Clean::simpleString($_REQUEST['login']);
$gatewayAdmin = new GatewayAdmin(); $gatewayAdmin = new GatewayAdmin();
if (Validate::username($identifiant) && Validate::password($password)){ if (Validate::login($identifiant) && Validate::password($password)){
$passwordbdd=$gatewayAdmin->getPasswordWithUsername($identifiant); $passwordbdd=$gatewayAdmin->getPasswordWithLogin($identifiant);
if($passwordbdd==null) throw new InexistantIdentifierException(); if($passwordbdd==null) throw new InexistantLoginException();
if(password_verify($sel . $password,$passwordbdd)) { if(password_verify($sel . $password,$passwordbdd)) {
$_SESSION['role'] = 'Admin'; $_SESSION['role'] = 'Admin';
} else { } else {
@ -135,6 +135,6 @@ class ModelCandidate
} }
} }
else throw new InvalidIdentifierOrPasswordException(); else throw new InvalidLoginOrPasswordException();
} }
} }

@ -26,8 +26,8 @@
} }
?> ?>
</div> </div>
<label class="margin-space" for="identifier"> <label class="margin-space" for="login">
<input type="text" name="identifier" id="identifier" placeholder="Identifiant" required> <input type="text" name="login" id="login" placeholder="Identifiant" required>
</label> </label>
<label class="margin-space" for="password"> <label class="margin-space" for="password">
<input type="password" name="password" id="password" placeholder="Mot de passe" required> <input type="password" name="password" id="password" placeholder="Mot de passe" required>

Loading…
Cancel
Save