SMMP/build/api/module/authenticationDefault.php

203 lines
5.0 KiB
PHP
Raw Normal View History

<?php
2016-10-18 14:03:03 +00:00
namespace api\module;
use \database\core\DatabaseDriver;
2016-10-18 14:03:03 +00:00
use \api\core\Authentification;
use \database\core\Repo;
use \manager\repo\cluster as clusterRepo;
use \error\core\Error;
use \error\core\Err;
class authenticationDefault{
2017-01-30 17:39:21 +00:00
public function __construct(){
// Routine to execute before each call to authenticationDefault's method
2017-01-30 17:39:21 +00:00
}
public function __destruct(){
// Routine to execute after each call to authenticationDefault's method
2017-01-30 17:39:21 +00:00
}
/* 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
*
*/
2017-01-30 17:39:21 +00:00
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
*
*/
2017-01-30 17:39:21 +00:00
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
2016-07-14 07:36:18 +00:00
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
2016-07-14 07:36:18 +00:00
if( $usernameFetched['password'] != $hash_password )
return [ 'status' => false ];
/* [3] On définit le token
=========================================================*/
2016-07-14 07:36:18 +00:00
$_SESSION['AUTH'][1] = $usernameFetched['token'];
// On retourne le status
return [ 'status' => true ];
}
/* MODIFICATION MOT DE PASSE ADMINISTRATEUR
*
* @old<String> Ancien mot de passe (actuel)
* @new<String> Nouveau mot de passe
* @confirm<String> Confirmation mot de passe
*
* @return status<Boolean> TRUE si les crédits sont bons, sinon FALSE
*
*/
public function update_admin($params){
extract($params);
/* [1] On vérifie la confirmation de mot de passe
=========================================================*/
if( $new !== $confirm )
return [ 'error' => new Error(Err::WrongParam, 'confirm') ];
/* [2] On vérifie le mot de passe actuel
=========================================================*/
/* (1) On hash le mot de passe actuel */
$hash_old = secure_hash($old, $_SESSION['ADMIN']['username']);
/* (2) On vérifie que le mot de passe est correct */
$checkPassword = new Repo('admin/getById', [
$_SESSION['WAREHOUSE']['id'],
$_SESSION['ADMIN']['id']
]);
$adminFetched = $checkPassword->answer();
// Si aucun résultat -> erreur
if( $adminFetched === false )
return [ 'error' => new Error(Err::NoMatchFound) ];
/* [3] On vérifie le mot de passe actuel
=========================================================*/
// Si mot de passe faux, on retourne une erreur
if( $adminFetched['password'] != $hash_old )
return [ 'error' => new Error(Err::WrongParam, 'old') ];
/* [3] On met à jour le mot de passe
=========================================================*/
/* (1) On hash le nouveau mot de passe */
$hash_new = secure_hash($new, $adminFetched['username']);
/* (w) Requête */
$update = new Repo('admin/edit', [
$adminFetched['id_admin'],
$adminFetched['username'],
$adminFetched['mail'],
$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) ];
}
}
?>