/**
  * 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);
 }
Beispiel #2
0
 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);
         }
     }
 }
Beispiel #3
0
 private function disconnect()
 {
     \application\resonance2\debug\console::FunctionTrace(__FUNCTION__);
     \application\resonance2\debug\console::Trace("Access denied");
     \application\resonance2\application::disconnect();
 }
Beispiel #4
0
 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;
 }
Beispiel #5
0
 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");
 }