193 lines
5.0 KiB
PHP
Executable File
193 lines
5.0 KiB
PHP
Executable File
<?php
|
|
|
|
namespace api\module;
|
|
use \database\core\DatabaseDriver;
|
|
use \api\core\Authentification;
|
|
use \database\core\Repo;
|
|
use \manager\repo\cluster as clusterRepo;
|
|
use \error\core\Error;
|
|
use \error\core\Err;
|
|
|
|
class authenticationDefault{
|
|
|
|
public function __construct(){
|
|
// Routine to execute before each call to authenticationDefault's method
|
|
}
|
|
|
|
public function __destruct(){
|
|
// Routine to execute after each call to authenticationDefault's method
|
|
}
|
|
|
|
/* CONNEXION A UN ENTREPOT
|
|
*
|
|
* @name<String> Nom de l'entrepot
|
|
* @password<String> Mot de passe de l'entrepot
|
|
*
|
|
* @return status<Boolean> TRUE si les crédits sont bons, sinon FALSE
|
|
*
|
|
*/
|
|
public function warehouse($params){
|
|
extract($params);
|
|
|
|
|
|
/* [0] Par défaut, on déconnecte
|
|
=========================================================*/
|
|
$_SESSION['AUTH'] = [];
|
|
|
|
|
|
/* [1] On recherche un entrepot avec ce nom
|
|
=========================================================*/
|
|
$getName = new Repo('warehouse/getByName', [$name]);
|
|
|
|
$nameFetched = $getName->answer();
|
|
|
|
// Si aucun résultat, on retourne le status FALSE
|
|
if( count($nameFetched) == 0 )
|
|
return [ 'status' => false ];
|
|
|
|
|
|
/* [2] On vérifie le mot de passe
|
|
=========================================================*/
|
|
$hash_password = secure_hash($password, $name);
|
|
|
|
// Si mot de passe faux, on retourne le status FALSE
|
|
if( $nameFetched[0]['password'] != $hash_password )
|
|
return [ 'status' => false ];
|
|
|
|
|
|
/* [3] On définit le token
|
|
=========================================================*/
|
|
$_SESSION['AUTH'][0] = $nameFetched[0]['token'];
|
|
|
|
// On retourne le status
|
|
return [ 'status' => true ];
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/* CONNEXION EN TANT QU'ADMINISTRATEUR
|
|
*
|
|
* @username<String> Nom de l'administrateur
|
|
* @password<String> Mot de passe de l'administrateur
|
|
*
|
|
* @return status<Boolean> TRUE si les crédits sont bons, sinon FALSE
|
|
*
|
|
*/
|
|
public function admin($params){
|
|
extract($params);
|
|
|
|
/* [0] Par défaut, on déconnecte l'administrateur
|
|
=========================================================*/
|
|
$_SESSION['AUTH'][1] = '';
|
|
|
|
|
|
/* [1] On recherche un administrateur avec ce nom
|
|
=========================================================*/
|
|
$getUsername = new Repo('admin/getByUsername', [
|
|
$_SESSION['WAREHOUSE']['id'],
|
|
$username
|
|
]);
|
|
|
|
$usernameFetched = $getUsername->answer();
|
|
|
|
// Si aucun résultat, on retourne le status FALSE
|
|
if( $usernameFetched === false )
|
|
return [ 'status' => false ];
|
|
|
|
|
|
/* [2] On vérifie le mot de passe
|
|
=========================================================*/
|
|
$hash_password = secure_hash($password, $username);
|
|
|
|
// Si mot de passe faux, on retourne le status FALSE
|
|
if( $usernameFetched['password'] != $hash_password )
|
|
return [ 'status' => false ];
|
|
|
|
|
|
/* [3] On définit le token
|
|
=========================================================*/
|
|
$_SESSION['AUTH'][1] = $usernameFetched['token'];
|
|
|
|
|
|
// On retourne le status
|
|
return [ 'status' => true ];
|
|
}
|
|
|
|
|
|
|
|
|
|
/* MODIFICATION CODE D'ACCES ENTREPOT
|
|
*
|
|
* @old<String> Ancien code d'accès (actuel)
|
|
* @new<String> Nouveau code d'accès
|
|
* @confirm<String> Confirmation code d'accès
|
|
*
|
|
* @return status<Boolean> TRUE si les crédits sont bons, sinon FALSE
|
|
*
|
|
*/
|
|
public function update_warehouse($params){
|
|
extract($params);
|
|
|
|
|
|
|
|
/* [1] On vérifie la confirmation de code d'accès
|
|
=========================================================*/
|
|
if( $new !== $confirm )
|
|
return [ 'error' => new Error(Err::WrongParam, 'confirm') ];
|
|
|
|
|
|
/* [2] On vérifie le code d'accès actuel
|
|
=========================================================*/
|
|
/* (1) On hash le code d'accès actuel */
|
|
$hash_old = secure_hash($old, $_SESSION['WAREHOUSE']['name']);
|
|
|
|
/* (2) On vérifie que le code d'accès est correct */
|
|
$checkPassword = new Repo('warehouse/getById', [
|
|
$_SESSION['WAREHOUSE']['id']
|
|
]);
|
|
|
|
$warehouseFetched = $checkPassword->answer();
|
|
|
|
// Si aucun résultat -> erreur
|
|
if( $warehouseFetched === false )
|
|
return [ 'error' => new Error(Err::NoMatchFound) ];
|
|
|
|
|
|
/* [3] On vérifie le code d'accès actuel
|
|
=========================================================*/
|
|
// Si code d'accès faux, on retourne une erreur
|
|
if( $warehouseFetched['password'] != $hash_old )
|
|
return [ 'error' => new Error(Err::WrongParam, 'old') ];
|
|
|
|
|
|
/* [3] On met à jour le code d'accès
|
|
=========================================================*/
|
|
/* (1) On hash le nouveau code d'accès */
|
|
$hash_new = secure_hash($new, $warehouseFetched['name']);
|
|
|
|
/* (w) Requête */
|
|
$update = new Repo('warehouse/edit', [
|
|
$warehouseFetched['id_warehouse'],
|
|
$warehouseFetched['name'],
|
|
$hash_new
|
|
]);
|
|
|
|
/* (3) Gestion erreur */
|
|
if( !$update->answer() )
|
|
return [ 'error' => new Error(Err::RepoError) ];
|
|
|
|
/* (4) Succès si tout ok */
|
|
return [ 'error' => new Error(Err::Success) ];
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
?>
|