= 1 ){ $checkRoot = new Repo('warehouse/getByToken', [ $_SESSION['AUTH'][0] ]); /* (1) Si le token n'existe pas, on retourne une erreur */ if( count($checkRoot->answer()) < 1 ) return false; /* (2) On met à jour les informations de l'entrepot */ $_SESSION['WAREHOUSE'] = [ 'id' => (int) $checkRoot->answer()[0]['id_warehouse'], 'name' => $checkRoot->answer()[0]['name'] ]; /* (3) On récupère les modules de l'entrepot */ $getModules = new Repo('warehouse/getModules', [ $_SESSION['WAREHOUSE']['id'] ]); $_SESSION['WAREHOUSE']['modules'] = $getModules->answer(); } /* [3] Si authentification double =========================================================*/ if( self::auth() >= 2 ){ $checkBranch = new Repo('admin/getByToken', [ $_SESSION['AUTH'][1] ]); /* (1) Si le token n'existe pas, on retourne une erreur */ if( count($checkBranch->answer()) < 1 ) return false; /* (2) Si pas administrateur de l'entrepot, on retourne une erreur */ if( $checkBranch->answer()[0]['id_warehouse'] != $_SESSION['WAREHOUSE']['id'] ) return false; /* (3) On met à jour les informations de l'administrateur */ $_SESSION['ADMIN'] = [ 'id' => (int) $checkBranch->answer()[0]['id_admin'], 'username' => $checkBranch->answer()[0]['username'], 'mail' => $checkBranch->answer()[0]['mail'] ]; } /* [4] Si pas d'erreur d'authentification, on retourne TRUE =========================================================*/ return true; } /* VERIFICATION DES ACCES EN FONCTION DE PERMISSIONS ATTENDUES * * @expected Liste des permissions attendues * * @return status Si FALSE, pas la permission, sinon si * */ public static function permission($expected){ /* [0] Mise à jour de l'authentification =========================================================*/ self::check(); /* [1] Gestion de l'AUTH (authentification) =========================================================*/ /* (1) Si entrepot requis, mais manquant ---------------------------------------------------------*/ if( in_array('warehouse', $expected) && self::auth() < 1 ) return false; /* (2) Si admin requis, mais manquant ---------------------------------------------------------*/ if( in_array('admin', $expected) && self::auth() < 2 ) return false; /* (3) On retire 'warehouse' et 'admin' de @expected ---------------------------------------------------------*/ $warehouseIndex = array_search('warehouse', $expected); $adminIndex = array_search('admin', $expected); if( is_int($warehouseIndex) ) unset($expected[$warehouseIndex]); if( is_int($adminIndex) ) unset($expected[$adminIndex]); /* [2] Gestion des permissions =========================================================*/ foreach($expected as $permission) // Si il manque au minimum une permission, on retourne FALSE if( !in_array($permission, $_SESSION['PERM']) ) return false; /* [3] Si on a toutes les permissions requises =========================================================*/ return true; } /* RENVOIE LE NIVEAU D'AUTHENTIFICATION * * @return auth Niveau d'authentification (0 à 2) * */ public static function auth(){ return !is_array($_SESSION['AUTH']) ? 0 : count($_SESSION['AUTH']); } } ?>