Regroupement de toutes les gestions d'authentification et de permissions dans [api::Authentification]
This commit is contained in:
parent
00ef03de78
commit
ac7a330d55
|
@ -3,6 +3,7 @@
|
|||
namespace api\core;
|
||||
|
||||
use \database\core\Repo;
|
||||
use \error\core\Error;
|
||||
|
||||
|
||||
|
||||
|
@ -129,12 +130,13 @@
|
|||
|
||||
/* VERIFICATION DES ACCES EN FONCTION DE PERMISSIONS ATTENDUES
|
||||
*
|
||||
* @module<String> Module concerné
|
||||
* @expected<array> Liste des permissions attendues
|
||||
*
|
||||
* @return status<Boolean> Si FALSE, pas la permission, sinon si
|
||||
*
|
||||
*/
|
||||
public static function permission($expected){
|
||||
public static function permission($module, $expected){
|
||||
/* [0] Mise à jour de l'authentification
|
||||
=========================================================*/
|
||||
// self::check();
|
||||
|
@ -146,12 +148,12 @@
|
|||
/* (1) Si entrepot requis, mais manquant
|
||||
---------------------------------------------------------*/
|
||||
if( in_array('warehouse', $expected) && self::auth() < 1 )
|
||||
return false;
|
||||
return Error::PermissionError;
|
||||
|
||||
/* (2) Si admin requis, mais manquant
|
||||
---------------------------------------------------------*/
|
||||
if( in_array('admin', $expected) && self::auth() < 2 )
|
||||
return false;
|
||||
return Error::PermissionError;
|
||||
|
||||
/* (3) On retire 'warehouse' et 'admin' de @expected
|
||||
---------------------------------------------------------*/
|
||||
|
@ -163,15 +165,32 @@
|
|||
|
||||
/* [2] Gestion des permissions
|
||||
=========================================================*/
|
||||
/* (1) Vérification de toutes les permissions requises */
|
||||
foreach($expected as $permission)
|
||||
// Si il manque au minimum une permission, on retourne FALSE
|
||||
if( !in_array($permission, $_SESSION['PERM']) )
|
||||
return false;
|
||||
return Error::PermissionError;
|
||||
|
||||
|
||||
/* [3] Si on a toutes les permissions requises
|
||||
/* [3] Vérification que le module est actif pour l'entrepot
|
||||
=========================================================*/
|
||||
return true;
|
||||
|
||||
/* (1) On vérifie que le module est actif dans l'entrepot */
|
||||
$allowedModule = isset($_SESSION['WAREHOUSE']['modules'])
|
||||
&& is_array($_SESSION['WAREHOUSE']['modules'])
|
||||
&& in_array($module, $_SESSION['WAREHOUSE']['modules']);
|
||||
|
||||
/* (2) On vérifie si le module est un module "Default" */
|
||||
$defaultModule = preg_match('/^(\w+)Default$/', $module);
|
||||
|
||||
/* (3) Si aucune autorisation et pas module "Default" */
|
||||
if( !$allowedModule && !$defaultModule )
|
||||
return Error::DisabledModule;
|
||||
|
||||
|
||||
/* [4] Si on a toutes les permissions requises
|
||||
=========================================================*/
|
||||
return Error::Success;
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -376,34 +376,15 @@
|
|||
|
||||
/* [2] Vérification des permissions et de l'authentification
|
||||
=========================================================*/
|
||||
$granted = Authentification::permission($method['permissions']);
|
||||
$granted = Authentification::permission($this->path['module'], $method['permissions']);
|
||||
|
||||
/* (1) On retourne FAUX si aucun droit n'a ete trouve */
|
||||
if( !$granted ){
|
||||
if( $granted !== Error::Success ){
|
||||
$this->error = Error::PermissionError;
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
/* [3] On vérifie que le module est autorisé
|
||||
=========================================================*/
|
||||
$moduleName = $this->path['module'];
|
||||
|
||||
/* (1) On vérifie que le module est actif dans l'entrepot */
|
||||
$allowedModule = isset($_SESSION['WAREHOUSE']['modules'])
|
||||
&& is_array($_SESSION['WAREHOUSE']['modules'])
|
||||
&& in_array($moduleName, $_SESSION['WAREHOUSE']['modules']);
|
||||
|
||||
/* (2) On vérifie si le module est un module "Default" */
|
||||
$defaultModule = preg_match('/^(\w+)Default$/', $moduleName);
|
||||
|
||||
/* (3) Si aucune autorisation et pas module "Default" */
|
||||
if( !$allowedModule && !$defaultModule ){
|
||||
$this->error = Error::DisabledModule;
|
||||
return false; // On retourne FALSE, si erreur
|
||||
}
|
||||
|
||||
|
||||
|
||||
/* On retourne VRAI si la permission est ok */
|
||||
return true;
|
||||
|
|
Loading…
Reference in New Issue