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.
*
* @param string $login Login du nouvel adimin
* @param string $hash Mot de passe au format hash du nouvel admin
*
* @return void
* 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.
* @return String|null Le mot de passe de l'administrateur ou null si l'administrateur n'existe pas.
*/
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
public function getPasswordWithLogin(String $login)
{
$query = "DELETE FROM Admin WHERE login = :login";
$query = "SELECT password FROM ADMIN WHERE login = :login";
$this->connection->executeQuery($query, array(
':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();
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__));
}
}

@ -26,10 +26,10 @@ class Validate
* @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;
return (strlen($pseudo) >= 3 && preg_match("#[a-zA-Z0-9]+#", $pseudo) && strlen($pseudo) <= $pseudoMaxLength);
global $loginMaxLength;
return (strlen($login) >= 3 && preg_match("#[a-zA-Z0-9]+#", $login) && strlen($login) <= $loginMaxLength);
}
/**

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

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

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

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

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

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

Loading…
Cancel
Save