/** * Load of the hierarchy from the DataBase and save informations in two variables * -Var grades, array * -Var numberGrader, int * * @param none * @return nothing */ private function ADMIN_loadGrades() { \application\resonance2\debug\console::FunctionTrace(__FUNCTION__); $table = cTABLEHIERARCHY; //C'est ici que l'on définit la table qui contient les règles des droits des utilisateurs $grades = \application\resonance2\application::SQLPDO_getAllItems($table); $this->grades = $grades; $this->numberGrades = \application\resonance2\application::SQLPDO_countrow($table); }
public function SQLPDO_deleteTableRowWhereProprietyEqual($table, $propriety, $equal) { \application\resonance2\debug\console::FunctionTrace(__FUNCTION__); if (is_null($table)) { \application\resonance2\debug\console::Alert("Class: " . __CLASS__ . " Function: " . __FUNCTION__ . " table is null"); throw new \Exception("Class: " . __CLASS__ . " Function: " . __FUNCTION__ . " table is null"); } elseif (is_null($propriety)) { \application\resonance2\debug\console::Alert("Class: " . __CLASS__ . " Function: " . __FUNCTION__ . " propriety is null"); throw new \Exception("Class: " . __CLASS__ . " Function: " . __FUNCTION__ . " propriety is null"); } elseif (is_null($equal)) { \application\resonance2\debug\console::Alert("Class: " . __CLASS__ . " Function: " . __FUNCTION__ . " equal is null"); throw new \Exception("Class: " . __CLASS__ . " Function: " . __FUNCTION__ . " equal is null"); } else { try { \application\resonance2\application::SQLPDO_open_connection(); $rqt = \application\resonance2\application::SQLPDO_getPDO_object()->prepare("DELETE FROM `{$table}` WHERE `{$propriety}` = '{$equal}'"); $rqt->execute(); } catch (\PDOException $e) { \application\resonance2\debug\console::Trace($e); } } }
private function disconnect() { \application\resonance2\debug\console::FunctionTrace(__FUNCTION__); \application\resonance2\debug\console::Trace("Access denied"); \application\resonance2\application::disconnect(); }
private static function MODELS_runFilter() { $fullAccess = false; if (count(self::$userGrantedNumber) > 0) { //Il y a au moins 1 règle donnant un accès for ($i = 0; $i < self::$userGrantedNumber; $i++) { //On regarde d'abord si l'une de ses règles donne un accès complet if (is_null(self::$userGrantedList[$i]["MODELNAME"])) { //Détection d'une règle donnant un accès complet $fullAccess = true; } else { //Détection d'une règle particulière //Récupère la catégorie du modèle $tables = array(cTABLEMODELS, cTABLEMODELSCATEGORIES, cTABLECONSTRAINT, cTABLEVIEWPREFERENCE, cTABLEWORKSPACE); $conditions = array("NAME" => self::$userGrantedList[$i]["MODELNAME"], "document_models.WORKSPACES" => "document_workspace.ID", "document_models.VIEWPREFERENCES" => "document_viewpreference.ID", "document_models.CONSTRAINTS" => "document_constraint.ID", "document_models.CATEGORIES" => "document_categories.ID"); $modelDatas = \application\resonance2\application::SQLPDO_getItemsWhereProprietiesEquals($tables, "*", $conditions); //echo "<pre>" . print_r ( $modelDatas, 1 ) . "</pre>"; $modelCategoryName = \application\resonance2\application::SQLPDO_getItemsWhereProprietiesEquals(cTABLEMODELSCATEGORIES, "CATEGORY", array("ID" => $modelDatas[0]["CATEGORIES"])); $modelCategoryName = $modelCategoryName[0]["CATEGORY"]; self::$userTable[$modelCategoryName] = array($modelDatas[0]); } } if ($fullAccess === true) { //Il y a au moins une règle qui donne un accès totale, l'utilisateur à accès à tout //On efface les éventuelles règles particulières donnant l'accès self::$userTable = null; //On donne l'accès complet self::$userTable = self::$modelsList; } else { //Aucune règle ne donne un accès totale, le tableau self::$userTable à été remplit précédement au fur et à mesure du scannage des règles if (self::$userDeniedNumber > 0) { //Au moins une règle restreint les accès pour cet utilisateur //On repart du tableau précédent pour retirer le ou les modèle(s) restreint(s) //Pour chaque RESTRICTION for ($i = 0; $i < self::$userDeniedNumber; $i++) { //La taille du tableau des autorisations doit être rafraîchit à chaque boucle pour ne pas avoir d'erreur durant la phase de suppression //Pour chaque CATEGORIE if (!is_null(self::$userTable)) { $userGrantedListCategoryNumber = count(array_unique(self::$userTable, SORT_REGULAR)); for ($j = 0; $j < $userGrantedListCategoryNumber; $j++) { //Nom de la catégorie en cours de filtrage $currentCategory = array_keys(self::$userTable); $currentCategory = $currentCategory[$j]; //Pour chaque MODELE if (!is_null(self::$userTable[$currentCategory])) { $userGrantedListModelNumber = count(array_unique(self::$userTable[$currentCategory], SORT_REGULAR)); for ($k = 0; $k < $userGrantedListModelNumber; $k++) { if (self::$userTable[$currentCategory][$k]['NAME'] === self::$userDeniedList[$i]["MODELNAME"]) { //Une restriction à été trouvée, l'élément est supprimé du tableau userGrantedList unset(self::$userTable[$currentCategory][$k]); //Réinitialise à 0 les variables J et K à chaque fois qu'un élément est supprimé pour être sûr de bien passer sur tous les éléments du tableau $j = $k = 0; //Réinitialise les numéros de clés des tableaux à l'intérieur des catégories self::$userTable[$currentCategory] = array_merge(self::$userTable[$currentCategory]); //Recalcul le nombre de modèle dans chaque catégorie $userGrantedListModelNumber = count(array_unique(self::$userTable[$currentCategory])); if ($userGrantedListModelNumber === 0 || is_null(self::$userTable[$currentCategory])) { break; //Stop la boucle si la catégorie est vide } } } } //Recalcul le nombre de de catégorie $userGrantedListCategoryNumber = count(array_unique(self::$userTable, SORT_REGULAR)); if ($userGrantedListCategoryNumber === 0 || is_null(self::$userTable)) { break; //Stop la boucle si la catégorie est vide } } } } } } } else { if (self::$userDeniedNumber > 0) { //Il n'y a aucune règle qui donne droit à l'accès d'un modèle, par contre il y a au moins une règle qui interdit un ou plusieurs accès } else { //Aucune règle n'a été définit pour cet utilisateur du groupe self::$userTable = array(); } } return self::$userTable; }
public static function USERS_getUserGroupFromLogin() { return \application\resonance2\application::SQLPDO_useCustomRequest("SELECT `" . cTABLEUSERGROUPS . "`.NAME FROM `" . cTABLEUSERS . "`, `" . cTABLEGROUPSMEMBERS . "`, `" . cTABLEUSERGROUPS . "` WHERE `" . cTABLEUSERGROUPS . "`.PROJECTLINKED LIKE '%" . cPROJET . ";%' AND `" . cTABLEUSERGROUPS . "`.NAME = `" . cTABLEGROUPSMEMBERS . "`.GROUPNAME AND `" . cTABLEGROUPSMEMBERS . "`.MEMBER = '" . self::USERS_getUserLoggin() . "' LIMIT 1"); }