Regroupement de toutes les gestions d'authentification et de permissions dans [api::Authentification]
This commit is contained in:
parent
8e5b6ae77c
commit
45c1a0c1e3
|
@ -3,6 +3,7 @@
|
||||||
namespace api\core;
|
namespace api\core;
|
||||||
|
|
||||||
use \database\core\Repo;
|
use \database\core\Repo;
|
||||||
|
use \error\core\Error;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -129,12 +130,13 @@
|
||||||
|
|
||||||
/* VERIFICATION DES ACCES EN FONCTION DE PERMISSIONS ATTENDUES
|
/* VERIFICATION DES ACCES EN FONCTION DE PERMISSIONS ATTENDUES
|
||||||
*
|
*
|
||||||
|
* @module<String> Module concerné
|
||||||
* @expected<array> Liste des permissions attendues
|
* @expected<array> Liste des permissions attendues
|
||||||
*
|
*
|
||||||
* @return status<Boolean> Si FALSE, pas la permission, sinon si
|
* @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
|
/* [0] Mise à jour de l'authentification
|
||||||
=========================================================*/
|
=========================================================*/
|
||||||
// self::check();
|
// self::check();
|
||||||
|
@ -146,12 +148,12 @@
|
||||||
/* (1) Si entrepot requis, mais manquant
|
/* (1) Si entrepot requis, mais manquant
|
||||||
---------------------------------------------------------*/
|
---------------------------------------------------------*/
|
||||||
if( in_array('warehouse', $expected) && self::auth() < 1 )
|
if( in_array('warehouse', $expected) && self::auth() < 1 )
|
||||||
return false;
|
return Error::PermissionError;
|
||||||
|
|
||||||
/* (2) Si admin requis, mais manquant
|
/* (2) Si admin requis, mais manquant
|
||||||
---------------------------------------------------------*/
|
---------------------------------------------------------*/
|
||||||
if( in_array('admin', $expected) && self::auth() < 2 )
|
if( in_array('admin', $expected) && self::auth() < 2 )
|
||||||
return false;
|
return Error::PermissionError;
|
||||||
|
|
||||||
/* (3) On retire 'warehouse' et 'admin' de @expected
|
/* (3) On retire 'warehouse' et 'admin' de @expected
|
||||||
---------------------------------------------------------*/
|
---------------------------------------------------------*/
|
||||||
|
@ -163,15 +165,32 @@
|
||||||
|
|
||||||
/* [2] Gestion des permissions
|
/* [2] Gestion des permissions
|
||||||
=========================================================*/
|
=========================================================*/
|
||||||
foreach($expected as $permission)
|
/* (1) Vérification de toutes les permissions requises */
|
||||||
// Si il manque au minimum une permission, on retourne FALSE
|
foreach($expected as $permission)
|
||||||
if( !in_array($permission, $_SESSION['PERM']) )
|
// Si il manque au minimum une permission, on retourne FALSE
|
||||||
return false;
|
if( !in_array($permission, $_SESSION['PERM']) )
|
||||||
|
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
|
/* [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 */
|
/* (1) On retourne FAUX si aucun droit n'a ete trouve */
|
||||||
if( !$granted ){
|
if( $granted !== Error::Success ){
|
||||||
$this->error = Error::PermissionError;
|
$this->error = Error::PermissionError;
|
||||||
return false;
|
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 */
|
/* On retourne VRAI si la permission est ok */
|
||||||
return true;
|
return true;
|
||||||
|
|
Loading…
Reference in New Issue