Regroupement de toutes les gestions d'authentification et de permissions dans [api::Authentification]

This commit is contained in:
xdrm-brackets 2016-11-08 09:34:02 +01:00
parent 8e5b6ae77c
commit 45c1a0c1e3
2 changed files with 30 additions and 30 deletions

View File

@ -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;
}

View File

@ -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;