SMMP/build/api/module/adminDefault.php

212 lines
5.0 KiB
PHP
Raw Normal View History

<?php
namespace api\module;
use \database\core\Repo;
use \error\core\Error;
use \error\core\Err;
class adminDefault{
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
}
/* RETOURNE LA LISTE DSE ADMINISTRATEURS DE L'ENTREPOT
*
* @return admins<array> Liste des administrateurs de l'entrepôt
*
*/
public function getAll($params){
/* (1) Fetch admin list
---------------------------------------------------------*/
/* (1) Prepare request */
$listRq = new Repo('admin/getByIdWarehouse', [ $_SESSION['WAREHOUSE']['id'] ]);
/* (2) Get response */
$listRs = $listRq->answer();
/* (3) Manage error */
if( !is_array($listRs) )
return ['error' => new Error(Err::RepoError)];
/* (2) Setup data (remove self)
---------------------------------------------------------*/
return ['admins' => $listRs];
}
/* 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($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) ];
}
/* CREATION D'UN NOUVEAL ADMINISTRATEUR
*
* @username<String> Identifiant du nouvel administrateur
*
* @return password<String> Mot de passe généré
*
*/
public function create($params){
extract($params);
/* [1] On génère un mot de passe
=========================================================*/
$password = secure_hash(uniqid(), uniqid());
/* [2] On vérifie l'unicité de l'identifiant
=========================================================*/
/* (1) On vérifie que l'identifiant n'existe pas */
$checkPassword = new Repo('admin/getByUsername', [
$_SESSION['WAREHOUSE']['id'],
$username
]);
$adminFetched = $checkPassword->answer();
// Si un résultat -> erreur
if( $adminFetched !== false )
return [ 'error' => new Error(Err::AlreadyExists, 'username') ];
/* [3] On crée l'administrateur
=========================================================*/
/* (1) Requête */
$create = new Repo('admin/create', [
$_SESSION['WAREHOUSE']['id'],
$username,
$mail,
$password
]);
/* (3) Gestion erreur */
if( !$create->answer() )
return [ 'error' => new Error(Err::RepoError) ];
/* (4) Succès si tout ok */
return [ 'password' => $password ];
}
/* SUPPRESSION D'UN ADMINISTRATEUR DU MEME ENTREPOT
*
* @id_admin<int> UID de l'administrateur
*
*/
public function delete($params){
extract($params);
/* [1] On vérifie que ce n'est pas nous-même
=========================================================*/
if( $id_admin == $_SESSION['ADMIN']['id'] )
return ['error' => new Error(Err::NoMatchFound) ];
/* [2] On essaie de supprimer
=========================================================*/
/* (1) On vérifie que l'identifiant n'existe pas */
$del_req = new Repo('admin/delete', [
$_SESSION['WAREHOUSE']['id'],
$id_admin
]);
/* (2) Gestion erreur */
if( !$del_req->answer() )
return [ 'error' => new Error(Err::RepoError) ];
/* (4) Succès si tout ok */
return [];
}
}
?>