Browse Source

Maj : Gestion des droits dynamiques

stany.ferer 1 year ago
parent
commit
4cb7f747da

+ 12 - 59
access.inc.php

@@ -1,66 +1,19 @@
 <?php
-    // Droits par profil
-
-    define("NOT_CONNECTED", array(
-        "json" => array(
-            "authenticator",
-            "login",
-        ),
-        "submit" => array(
-            "login",
-        ))
-    );
-
-    define("ACCESS_WHITE", array(
-        "page" => array(
+    
+    define("WHITE_ACCESS", array(
+            "user",
+            "unknow",
             "login",
             "login-salarie",
             "login-control",
             "spash-screen",
-            "maintenance"
-        ),
-        "json" => array(
-            "login",
-            "logout",
-        ),
-        "submit" => array(
+            "maintenance",
             "authenticator",
-            "login",
-            "logout"
-        ))
-    );
-
-    define("ACCESS_SALARIES", array(
-        "page" => array(
-            "list-events"
-        ),
-        "json" => array(
-            "list-events",
-            "check-control-emargement"
-        ),
-        "submit" => array(
-            "emargement"
-        ))
-    );
-
-    define("ACCESS_CONTROLEURS", array(
-        "page" => array(
-            "validateQRCode"
-        ),
-        "json" => array(
-        ),
-        "submit" => array(
-            "emargement"
-        ))
-    );
+            "logout",
+            "test",
+    ));
 
-    define("ACCESS_SOCIAL", array(
-        "page" => array(
-            "sociale-check-salarie"
-        ),
-        "json" => array(
-        ),
-        "submit" => array(
-            "sociale-check-salarie"
-        ))
-    );
+    define("OFF_LINE", array(
+        "authenticator",
+        "login",
+    ));

+ 2 - 0
conf.inc.php

@@ -40,6 +40,8 @@ define("DB_T_HISTORIQUE_REF", "historiqueRef");
 define("DB_T_BANQUE_COMPTES", "banque_comptes");
 define("DB_T_BANQUE_LIGNES", "banque_lignes");
 define("DB_T_BANQUE_CSV", "banque_csv");
+define("DB_T_TYPE_ACCESS", "type_access");
+define("DB_T_ACCESS", "access");
 
 define("DEFAUT_PAGE", "rh-liste-salaries");
 define("DEFAUT_PAGE_SOCIAL", "sociale-check-salarie");

+ 214 - 0
core/class/access.class.php

@@ -0,0 +1,214 @@
+<?php
+
+class access
+{
+    public static function check(string $_element)
+    {
+        // Eléments autorisé sans authentification
+        if (self::checkAccessWhite($_element)) {
+            return TRUE;
+        } else {
+            if (session::isConnect("salarie") and session::isEspaceSalaries()) { // Espaces spécifiques aux Salariés
+                return TRUE;
+            } elseif (session::isConnect() and session::getType() == 2 and session::isEspaceControleurs()) { // Espaces spécifiques aux Contrôleurs
+                return TRUE;
+            } else {
+                return self::ifAccesss($_element);
+            }
+        }
+    }
+
+    public static function checkAccessOffLine(string $_string)
+    {
+        return in_array($_string, OFF_LINE);
+    }
+
+    public static function checkAccessWhite(string $_string)
+    {
+        return in_array($_string, WHITE_ACCESS);
+    }
+
+    public static function getAccessList(int $_idType = NULL)
+    {
+        ($_idType == NULL) ? $idType = session::getType() : $idType = $_idType;
+        $return["access"] = $return["noAccess"] = array();
+
+        db::query("SELECT "
+            . "" . DB_T_ACCESS . ".id, "
+            . "" . DB_T_ACCESS . ".label, "
+            . "" . DB_T_ACCESS . ".access, "
+            . "" . DB_T_ACCESS . ".noAccess "
+            . "FROM " . DB_T_TYPE_ACCESS . " "
+            . "INNER JOIN " . DB_T_ACCESS . " ON " . DB_T_TYPE_ACCESS . ".id_access = " . DB_T_ACCESS . ".id "
+            . "WHERE " . DB_T_TYPE_ACCESS . ".id_type = :id_type ");
+        db::bind(':id_type', $idType);
+
+        try {
+            $tmp = db::resultset();
+            foreach ($tmp as $access) {
+                $return["access"] = self::addInArray($access["access"], $return["access"]);
+                $return["noAccess"] = self::addInArray($access["noAccess"], $return["noAccess"]);
+            }
+
+            // Je supprime les restriction d'accès en fonction des accès accordés
+            $return["noAccess"] = array_diff($return["noAccess"], $return["access"]);
+            
+            return $return;
+        } catch (Exception $e) {
+            return FALSE;
+        }
+    }
+
+    public static function getAccessByType()
+    {
+        $return = array();
+        db::query("SELECT "
+            . "" . DB_T_USER_TYPE . ".type, "
+            . "" . DB_T_ACCESS . ".label, "
+            . "" . DB_T_ACCESS . ".show, "
+            . "" . DB_T_ACCESS . ".add "
+            . "FROM " . DB_T_ACCESS . " "
+            . "INNER JOIN " . DB_T_USER_TYPE . " ON " . DB_T_USER_TYPE . ".id = " . DB_T_TYPE_ACCESS . ".id_type "
+            . "INNER JOIN " . DB_T_TYPE_ACCESS . " ON " . DB_T_ACCESS . ".id = " . DB_T_TYPE_ACCESS . ".id_access");
+        try {
+            $tmp = db::resultset();
+
+            foreach ($tmp as $access) {
+                $return[$access["type"]][$access["label"]] = array(
+                    "show" => $access["show"],
+                    "add" => $access["add"],
+                );
+            }
+
+            return $return;
+        } catch (Exception $e) {
+            return FALSE;
+        }
+    }
+
+    public static function getTypesAccess()
+    {
+        db::query("SELECT "
+            . "" . DB_T_ACCESS . ".label, "
+            . "" . DB_T_ACCESS . ".show, "
+            . "" . DB_T_ACCESS . ".add "
+            . "FROM " . DB_T_ACCESS);
+        try {
+            $tmp = db::resultset();
+            return $tmp;
+        } catch (Exception $e) {
+            return FALSE;
+        }
+    }
+
+    public static function getTypesUsers(bool $_expect = FALSE)
+    {
+        $except = ($_expect == FALSE) ? NULL : " WHERE " . DB_T_USER_TYPE . ".id != 1 AND " . DB_T_USER_TYPE . ".id != 2";
+
+        db::query("SELECT * FROM " . DB_T_USER_TYPE . $except);
+        try {
+            $tmp = db::resultset();
+            return $tmp;
+        } catch (Exception $e) {
+            return FALSE;
+        }
+    }
+
+    public static function getArrayTypes()
+    {
+        $return = $final = array();
+        $getTypesUsers = self::getTypesUsers(TRUE);
+
+        db::query("SELECT "
+            . "CONCAT(" . DB_T_ACCESS . ".label, '|', " . DB_T_ACCESS . ".show, " . DB_T_ACCESS . ".add) AS access, "
+            . "" . DB_T_TYPE_ACCESS . ".id_type, "
+            . "" . DB_T_USER_TYPE . ".type "
+            . "FROM " . DB_T_ACCESS . " "
+            . "LEFT JOIN " . DB_T_TYPE_ACCESS . " ON " . DB_T_TYPE_ACCESS . ".id_access = " . DB_T_ACCESS . ".id "
+            . "LEFT JOIN " . DB_T_USER_TYPE . " ON " . DB_T_TYPE_ACCESS . ".id_type = " . DB_T_USER_TYPE . ".id "
+        );
+
+        try {
+            $tmp = db::resultset();
+            foreach ($tmp as $access) {
+            
+                $tmpaccess = explode("|", $access["access"]);
+
+                if($tmpaccess[1] == "10"){
+                    $return[$access["access"]]["access"] = "Accès à " . $tmpaccess[0] . " en lecture";
+                } elseif($tmpaccess[1] == "01"){
+                    $return[$access["access"]]["access"] = "Accès à " . $tmpaccess[0] . " en écriture";
+                } else {
+                    $return[$access["access"]]["access"] = "Accès à " . $tmpaccess[0] . " en lecture et écriture";
+                } 
+
+                foreach ($getTypesUsers as $type) {
+                        if(isset($return[$access["access"]][$type["type"]]) AND $return[$access["access"]][$type["type"]] == 1)
+                        { $return[$access["access"]][$type["type"]] = 1; 
+                        } elseif($type["id"] == $access["id_type"]) 
+                        { $return[$access["access"]][$type["type"]] = 1;
+                        } else 
+                        { $return[$access["access"]][$type["type"]] = 0;
+                        }
+                    }
+                    $return[$access["access"]]["Administrateur"] = 1;
+                }
+
+                foreach ($return as $value) {
+                    $final[] = $value;
+                }
+            return $final;
+        } catch (Exception $e) {
+            return FALSE;
+        }
+    }
+
+    public static function ifAccesss(string $_accessAsk, int $_idType = NULL)
+    {
+        if (session::isConnect() == FALSE and self::checkAccessOffLine($_accessAsk)) {
+            return TRUE;
+        }
+        ($_idType == NULL) ? $idType = session::getType() : $idType = $_idType;
+        if ($idType == 1) {
+            return TRUE;
+        } // Si Admin OK
+
+        $accessList = self::getAccessList($idType);
+
+        $cheminGenrique = self::checkGenericAccess($_accessAsk, $accessList["access"]);
+        if ($cheminGenrique != FALSE AND !in_array($_accessAsk, $accessList["noAccess"])) { // Si Accès générique
+            return TRUE;
+        } elseif (in_array($_accessAsk, $accessList["access"]) or self::checkAccessWhite($_accessAsk)) {
+            return TRUE;
+        } else {
+            return FALSE;
+        }
+    }
+
+    private static function checkGenericAccess(string $_string, array $_access_list)
+    {
+        $string = explode("-", $_string)[0];
+        $check = in_array($string."*", $_access_list);
+        return ($check == TRUE) ? $string : FALSE;
+    }
+
+    private static function getGenericAccess(string $_string)
+    {
+        return explode("*", $_string);
+    }
+
+    private static function splitAccess(string $_string)
+    {
+        $return = array();
+        $tmp = array_filter(explode("\n", $_string));
+        foreach ($tmp as $key => $value) {
+            $return[$key] = trim($value);
+        }
+        return $return;
+    }
+
+    private static function addInArray(string $_string, array $_array)
+    {
+        return array_unique(array_merge(self::splitAccess($_string), $_array));
+    }
+}

+ 8 - 0
core/class/core.class.php

@@ -310,4 +310,12 @@ class core
     public static function base64_url_decode(string $val) {
         return base64_decode(strtr($val, '-_,', '+/='));
     }
+
+    public static function convertirEnUtf8(string $_texte) {
+        if (!mb_detect_encoding($_texte, 'UTF-8', TRUE)) {
+            return mb_convert_encoding($_texte, 'UTF-8', 'auto');
+        } else {
+            return $_texte;
+        }
+    }
 }

+ 18 - 10
core/class/get.class.php

@@ -11,6 +11,18 @@ class get
         }
     }
 
+    public static function getDefautPage(){
+        if(session::getType() == 3){ // Assistance sociale
+            return DEFAUT_PAGE_SOCIAL;
+        } else {
+            return DEFAUT_PAGE;
+        }
+    }
+    
+    public static function isDefautPage(string $_page){
+        return (core::ifGet("p") == FALSE AND $_page == self::getDefautPage()) ? TRUE : FALSE;
+    }
+
     public static function page(string $_page = NULL)
     {
         if (isset($_page)) {
@@ -18,14 +30,10 @@ class get
         } elseif (core::ifGet("p")) {
             $page = core::getGet("p");
         } else {
-            if (session::accessUserByType(1) OR session::accessUserByType(4) OR session::accessUserByType(5) OR session::accessUserByType(6)) { // Admin
-                $page = DEFAUT_PAGE;
-            } elseif (session::accessUserByType(3)) { // Assistance sociale
-                $page = DEFAUT_PAGE_SOCIAL;
-            }
+            $page = self::getDefautPage();
         }
 
-        if (session::accessElement($page, "page")) {
+        if (access::check($page, "page") OR in_array($page, WHITE_ACCESS)) {
             (file_exists(DIR_PHP_VIEWS_PAGE . self::environnement() . $page . '.php')) ?
                 require_once DIR_PHP_VIEWS_PAGE . self::environnement() . $page . '.php' : alert::recError("Page introuvable : " . $page);
         } else {
@@ -46,7 +54,7 @@ class get
             exit();
         }
 
-        if (session::accessElement($submit, "submit")) {
+        if (access::ifAccesss($submit)) {
             if (file_exists(DIR_PHP_SUBMIT . self::environnement() . $submit . '.php')) {
                 require_once DIR_PHP_SUBMIT . self::environnement() . $submit . '.php';
             } else {
@@ -60,7 +68,7 @@ class get
     public static function json()
     {
         if (core::ifGet("file")) {
-            if (session::accessElement(core::getGet("file"), "json")) {
+            if (access::check(core::getGet("file"), "json")) {
                 if (file_exists(DIR_DATAS_JSON . core::getGet("file") . '.json')) {
                     header('Content-type: application/json');
                     require_once DIR_DATAS_JSON . core::getGet("file") . '.json';
@@ -78,7 +86,7 @@ class get
     public static function jsonData()
     {
         if (core::ifGet("jsonData")) {
-            if (session::accessElement(core::getGet("jsonData"), "json") == TRUE) {
+            if (access::check(core::getGet("jsonData"), "json") == TRUE) {
                 if (file_exists(DIR_DATAS_JSONDATA . self::environnement() . core::getGet("jsonData") . '.php')) {
                     require_once DIR_DATAS_JSONDATA . self::environnement() . core::getGet("jsonData") . '.php';
                     exit();
@@ -141,7 +149,7 @@ class get
             return " active";
         } elseif (core::getGet("p") == $_page) {
             return " active";
-        } elseif (!core::ifGet("p") and (($_SESSION["user"]["idType"] == 1 and $_page == DEFAUT_PAGE) or ($_SESSION["user"]["idType"] == 3 and $_page == DEFAUT_PAGE_SOCIAL))) {
+        } elseif (self::isDefautPage($_page)) {
             return " active";
         }
     }

+ 8 - 156
core/class/session.class.php

@@ -22,174 +22,26 @@ class session
         return $_SESSION[$_type]["prenom"] . " " . $_SESSION[$_type]["nom"];
     }
 
-    public static function isConnect(string $_type = "user")
+    public static function getType(string $_type = "user")
     {
-        return (isset($_SESSION[$_type]["id"])) ? TRUE : FALSE;
+        return $_SESSION[$_type]["idType"];
     }
 
-    public static function accessUserByType(int $_type)
+    public static function isConnect(string $_type = "user")
     {
-
-        if (isset($_SESSION["user"]["id"])) {
-            if ($_SESSION["user"]["idType"] == 1) {
-                return TRUE;
-            } elseif ($_SESSION["user"]["idType"] == $_type) {
-                return TRUE;
-            } else {
-                return FALSE;
-            }
-        } else {
-            return FALSE;
-        }
+        return (isset($_SESSION[$_type]["id"])) ? TRUE : FALSE;
     }
 
     public static function access(array $_type){
         return (in_array($_SESSION["user"]["idType"], $_type)) ? TRUE : FALSE;
     }
 
-    public static function accessElement(string $_element, string $_type)
-    {
-        // Eléments autorisé sans authentification
-        if (self::elementWhite($_element, $_type)) {
-            return TRUE;
-        } else {
-            if (isset($_SESSION["salarie"]["id"])) { // Espaces spécifiques aux Salariés
-                if (self::elementSalaries($_element, $_type)) {
-                    return TRUE;
-                }
-            } elseif (isset($_SESSION["user"]["idType"]) and $_SESSION["user"]["idType"] == 2) { // Espaces spécifiques aux Contrôleurs
-                if (self::elementControleurs($_element, $_type)) {
-                    return TRUE;
-                }
-            } elseif (isset($_SESSION["user"]["idType"]) and $_SESSION["user"]["idType"] == 3) { // Espaces spécifiques aux Contrôleurs
-                if (self::elementServiceSocial($_element, $_type)) {
-                    return TRUE;
-                }
-            } elseif (isset($_SESSION["user"]["idType"]) and $_SESSION["user"]["idType"] == 4) { // Espaces spécifiques aux Modérateurs du CMS
-                if (self::elementModerateur($_element, $_type)) {
-                    return TRUE;
-                }
-            } elseif (isset($_SESSION["user"]["idType"]) and $_SESSION["user"]["idType"] == 5) { // Espaces spécifiques aux Membres du Bureau
-                if (self::elementBureauCSE($_element, $_type)) {
-                    return TRUE;
-                }
-            } elseif (isset($_SESSION["user"]["idType"]) and $_SESSION["user"]["idType"] == 6) { // Espaces spécifiques aux Elus du CSE
-                if (self::elementMembreCSE($_element, $_type)) {
-                    return TRUE;
-                }
-            }elseif (isset($_SESSION["user"]["idType"]) and $_SESSION["user"]["idType"] == 1) { // Espaces spécifiques aux Admins
-                return TRUE;
-            }
-        }
-        return FALSE;
-    }
-
-    public static function accessNotConnected(string $_element, string $_type)
-    {
-        return (in_array($_element, NOT_CONNECTED[$_type])) ? TRUE : FALSE;
+    public static function isEspaceControleurs(){
+        return ($_SERVER['HTTP_HOST'] == DOMAIN_CONTROL) ? TRUE : FALSE;
     }
 
-    private static function elementWhite(string $_element, string $_type)
-    {
-        return (in_array($_element, ACCESS_WHITE[$_type])) ? TRUE : FALSE;
+    public static function isEspaceSalaries(){
+        return ($_SERVER['HTTP_HOST'] == DOMAIN_EVENTS) ? TRUE : FALSE;
     }
 
-    private static function elementModerateur(string $_element, string $_type)
-    {
-        switch ($_type) {
-            case 'page':
-                $noAccessPage = array(
-                    "parametres",
-                    "compte",
-                );
-                return (core::isInArrayString($noAccessPage, $_element)) ? FALSE : TRUE;
-                break;
-            case 'submit':
-                $noAccessSubmit = array(
-                    "parametres",
-                    "compte",
-                );
-                return (core::isInArrayString($noAccessSubmit, $_element)) ? FALSE : TRUE;
-                break;
-            case 'json':
-                $noAccessJson = array(
-                    "parametres",
-                    "banque",
-                );
-                return (core::isInArrayString($noAccessJson, $_element)) ? FALSE : TRUE;
-                break;
-            default:
-                return TRUE;
-                break;
-        }
-    }
-
-    private static function elementBureauCSE(string $_element, string $_type)
-    {
-        switch ($_type) {
-            case 'page':
-                $noAccessPage = array(
-                    "parametres",
-                );
-                return (core::isInArrayString($noAccessPage, $_element)) ? FALSE : TRUE;
-                break;
-            case 'submit':
-                $noAccessSubmit = array(
-                    "parametres",
-                );
-                return (core::isInArrayString($noAccessSubmit, $_element)) ? FALSE : TRUE;
-                break;
-            case 'json':
-                $noAccessJson = array(
-                    "parametres",
-                );
-                return (core::isInArrayString($noAccessJson, $_element)) ? FALSE : TRUE;
-                break;
-            default:
-                return TRUE;
-                break;
-        }
-    }
-
-    private static function elementMembreCSE(string $_element, string $_type)
-    {
-        switch ($_type) {
-            case 'page':
-                $noAccessPage = array(
-                    "parametres",
-                );
-                return (core::isInArrayString($noAccessPage, $_element)) ? FALSE : TRUE;
-                break;
-            case 'submit':
-                $noAccessSubmit = array(
-                    "parametres",
-                );
-                return (core::isInArrayString($noAccessSubmit, $_element)) ? FALSE : TRUE;
-                break;
-            case 'json':
-                $noAccessJson = array(
-                    "parametres",
-                );
-                return (core::isInArrayString($noAccessJson, $_element)) ? FALSE : TRUE;
-                break;
-            default:
-                return TRUE;
-                break;
-        }
-    }
-
-    private static function elementSalaries(string $_element, string $_type)
-    {
-        return (in_array($_element, ACCESS_SALARIES[$_type])) ? TRUE : FALSE;
-    }
-
-    private static function elementControleurs(string $_element, string $_type)
-    {
-        return (in_array($_element, ACCESS_CONTROLEURS[$_type])) ? TRUE : FALSE;
-    }
-
-    private static function elementServiceSocial(string $_element, string $_type)
-    {
-        return (in_array($_element, ACCESS_SOCIAL[$_type])) ? TRUE : FALSE;
-    }
 }

+ 7 - 3
core/controllers/cms.index.php

@@ -1,10 +1,14 @@
 <?php
 
-if(session::isConnect()){
+if (session::isConnect()) {
     require_once DIR_PHP_LAYOUTS . "cms.session.php";
-    if (core::ifGet("blank") == FALSE) { require_once DIR_PHP_VIEWS . "_cms.head.php"; }
+    if (core::ifGet("blank") == FALSE) {
+        require_once DIR_PHP_VIEWS . "_cms.head.php";
+    }
     get::page();
-    if (core::ifGet("blank") == FALSE) { require_once DIR_PHP_VIEWS . "_cms.foot.php"; }
+    if (core::ifGet("blank") == FALSE) {
+        require_once DIR_PHP_VIEWS . "_cms.foot.php";
+    }
 } else {
     get::page("login");
 }

+ 1 - 4
core/controllers/cms.session.php

@@ -1,10 +1,7 @@
 <?php
 
 if (!session::isConnect()) { // Si non log
-    if (
-        (core::ifPost("from") AND session::accessNotConnected(core::getPost("from"), "json") == FALSE) AND 
-        (core::ifPost("from") AND session::accessNotConnected(core::getPost("from"), "submit") == FALSE) 
-    ) {
+    if (core::ifPost("from") AND access::checkAccessOffLine(core::getPost("from")) == FALSE) {
         header('Location: ./');
         exit();
     } 

+ 9 - 0
core/json/cms.parametre-access.php

@@ -0,0 +1,9 @@
+<?php 
+
+$row = access::getArrayTypes();
+if (!empty($row)) {
+    echo json_encode($row);
+    exit();
+} else {
+    exit();
+}

+ 1 - 0
core/views/_cms.head.php

@@ -15,6 +15,7 @@
         <script src="libs/bootstrap/js/bootstrap.min.js"></script>
 
         <link rel="stylesheet" href="css/dashboard.css"> 
+        <link rel="stylesheet" href="css/cms.css">
         <link rel="icon" type="image/x-icon" href="favicon.ico">
         <meta name="robots" content="noindex">
         

+ 49 - 45
core/views/_cms.menu.php

@@ -4,100 +4,104 @@
 
             <?php  
                 $temp_accordion = array("rh-liste-salaries", "rh-historique-excel", "rh-upload-excel", "rh-import-to-temp", "stats");
-                (in_array(core::getGet("p"), $temp_accordion) OR core::ifGet("p") == FALSE) ? $_show = "show" : $_show = NULL;
-                (session::access(array(1, 4, 5 , 6))) ? 
+                (in_array(core::getGet("p"), $temp_accordion) OR (core::ifGet("p") == FALSE AND session::getType() != 3)) ? $_show = "show" : $_show = NULL;
+                (access::ifAccesss("rh")) ? 
                     core::elementMenuH6("Salariés", NULL, "col-salaries") : NULL;
                 echo '<ul class="collapse '. $_show .' list-unstyled" id="col-salaries" data-parent="#accordion">';
-                (session::access(array(1, 4, 5 , 6))) ? 
+                (access::ifAccesss("rh-liste-salaries")) ?
                     core::elementMenu("rh-liste-salaries", "/", "RH : Liste des salariés", "users") : NULL;
-                (session::access(array(1, 4, 5))) ? 
-                    core::elementMenu("rh-historique-excel", "/rh-historique-excel.html", "RH : Historique des Excels", "file-text") : NULL;
-                (session::access(array(1, 4, 5)) AND isset(salaries::excelGetInProgress()["name"])) ? 
-                    core::elementMenu("rh-import-to-temp", "/rh-import-to-temp.html", "RH : Reprise du traitement", "file-text") : NULL;
-                (session::access(array(1, 4, 5 , 6))) ? 
+                (access::ifAccesss("rh-historique-excel")) ?
+                    core::elementMenu("rh-historique-excel", "/rh-historique-excel.html", "RH : Historique des Excels", "archive") : NULL;
+                (access::ifAccesss("rh-historique-excel") AND isset(salaries::excelGetInProgress()["name"])) ? 
+                    core::elementMenu("rh-historique-excel", "/rh-import-to-temp.html", "RH : Reprise du traitement", "file-text") : NULL;
+                (access::ifAccesss("stats")) ? 
                     core::elementMenu("stats", "/stats.html", "RH : Stats salariés", "pie-chart") : NULL;
                 echo '</ul>';
 
                 $temp_accordion = array("proweb-salaries", "proweb-historique-excel", "proweb-export-csv", "proweb-salaries-upload");
                 (in_array(core::getGet("p"), $temp_accordion)) ? $_show = "show" : $_show = NULL;
-                (session::access(array(1, 4, 5 , 6))) ? 
+                (access::ifAccesss("proweb")) ? 
                     core::elementMenuH6("ProWeb", NULL, "col-proweb") : NULL;
                 echo '<ul class="collapse '. $_show .' list-unstyled" id="col-proweb" data-parent="#accordion">';
-                (session::access(array(1, 4, 5 , 6))) ? 
-                    core::elementMenu("proweb-salaries", "/proweb-salaries.html", "Proweb : Liste des salariés", "archive") : NULL;
-                (session::access(array(1, 4, 5))) ? 
-                    core::elementMenu("proweb-historique-excel", "/proweb-historique-excel.html", "Proweb : Historique des Excels", "file-text") : NULL;
-                (session::access(array(1, 4, 5))) ? 
+                (access::ifAccesss("proweb-salaries")) ?  
+                    core::elementMenu("proweb-salaries", "/proweb-salaries.html", "Proweb : Liste des salariés", "users") : NULL;
+                (access::ifAccesss("proweb-historique-excel")) ? 
+                    core::elementMenu("proweb-historique-excel", "/proweb-historique-excel.html", "Proweb : Historique des Excels", "archive") : NULL;
+                (access::ifAccesss("proweb-export-csv")) ? 
                 core::elementMenu("proweb-export-csv", "/proweb-export-csv.html", "Proweb : Transfert des données", "send") : NULL;
                 echo '</ul>';
 
                 $temp_accordion = array("compte", "compte-historique-csv", "compte-upload");
                 (in_array(core::getGet("p"), $temp_accordion)) ? $_show = "show" : $_show = NULL;
-                (session::access(array(1, 5))) ? 
+                (access::ifAccesss("compte")) ?  
                     core::elementMenuH6("Comptes bancaires", NULL, "col-banque") : NULL;
                 echo '<ul class="collapse '. $_show .' list-unstyled" id="col-banque" data-parent="#accordion">';
-                (session::access(array(1, 5))) ? 
-                    core::elementMenu("compte-1", "/compte-1.html", "Banque : Compte Courant ASC", "shopping-bag") : NULL;
-                (session::access(array(1, 5))) ? 
-                    core::elementMenu("compte-2", "/compte-2.html", "Banque : Compte Courant AEP", "shopping-bag") : NULL;
-                (session::access(array(1, 5))) ? 
-                    core::elementMenu("compte-3", "/compte-3.html", "Banque : Livret OBNL TRIPLEX", "shopping-bag") : NULL;
-                (session::access(array(1, 5))) ? 
-                    core::elementMenu("compte-4", "/compte-4.html", "Banque : Épargne financière", "shopping-bag") : NULL;
-                (session::access(array(1, 5))) ? 
-                    core::elementMenu("compte-historique-csv", "/compte-historique-csv.html", "Banque : Historique des CSV", "file-text") : NULL;
+                (access::ifAccesss("compte-1")) ?  
+                    core::elementMenu("compte-1", "/compte-1.html", "Banque : Compte Courant ASC", "bar-chart-2") : NULL;
+                (access::ifAccesss("compte-2")) ? 
+                    core::elementMenu("compte-2", "/compte-2.html", "Banque : Compte Courant AEP", "bar-chart-2") : NULL;
+                (access::ifAccesss("compte-3")) ?  
+                    core::elementMenu("compte-3", "/compte-3.html", "Banque : Livret OBNL TRIPLEX", "bar-chart-2") : NULL;
+                (access::ifAccesss("compte-4")) ? 
+                    core::elementMenu("compte-4", "/compte-4.html", "Banque : Épargne financière", "bar-chart-2") : NULL;
+                (access::ifAccesss("compte-historique-csv")) ? 
+                    core::elementMenu("compte-historique-csv", "/compte-historique-csv.html", "Banque : Historique des CSV", "archive") : NULL;
                 echo '</ul>';
                 
                 $temp_accordion = array("sociale-check-salarie");
-                (in_array(core::getGet("p"), $temp_accordion)) ? $_show = "show" : $_show = NULL;
-                (session::access(array(1, 3, 4, 5 , 6))) ? 
+                (in_array(core::getGet("p"), $temp_accordion) OR (core::ifGet("p") == FALSE AND session::getType() == 3)) ? $_show = "show" : $_show = NULL;
+                (access::ifAccesss("sociale")) ? 
                     core::elementMenuH6("Accès services sociaux", NULL, "col-sociaux") : NULL;
                 echo '<ul class="collapse '. $_show .' list-unstyled" id="col-sociaux" data-parent="#accordion">';
-                (session::access(array(1, 3, 4, 5 , 6))) ?
+                (access::ifAccesss("sociale-check-salarie")) ?
                     core::elementMenu("sociale-check-salarie", "/sociale-check-salarie.html", "Validation d'un compte salarié", "check-square") : NULL;
                 echo '</ul>';
 
                 $temp_accordion = array("evenements", "evenement", "lotterys", "lottery");
                 (in_array(core::getGet("p"), $temp_accordion)) ? $_show = "show" : $_show = NULL;
-                (session::access(array(1, 4, 5 , 6))) ? 
+                (access::ifAccesss("evenements")) ?
                     core::elementMenuH6("Evènements", NULL, "col-events") : NULL;
                 echo '<ul class="collapse '. $_show .' list-unstyled" id="col-events" data-parent="#accordion">';
-                (session::access(array(1, 4, 5 , 6))) ? 
+                (access::ifAccesss("evenements")) ?
                     core::elementMenu("evenements", "/evenements.html", "Listes des évènements", "calendar") : NULL;
-                (session::access(array(1, 4, 5 , 6))) ? 
+                (access::ifAccesss("lotterys")) ? 
                     core::elementMenu("lotterys", "/lotterys.html", "Listes des tirages au sort", "zap") : NULL;
                 echo '</ul>';
                 
                 $temp_accordion = array();
                 (in_array(core::getGet("p"), $temp_accordion)) ? $_show = "show" : $_show = NULL;
-                (session::access(array(1, 4, 5 , 6))) ? 
+                (access::ifAccesss("pratique")) ?
                     core::elementMenuH6("Pratiques", NULL, "col-practice") : NULL;
                 echo '<ul class="collapse '. $_show .' list-unstyled" id="col-practice" data-parent="#accordion">';
-                (session::access(array(1, 4, 5 , 6))) ?
+                (access::ifAccesss("pratique")) ?
                     core::elementMenuLink("https://corporatedirectory.capgemini.com/MyDirectory/portals/std/index-portal.jsp", "Corporate Directory", "link") : NULL;
-                (session::access(array(1, 4, 5 , 6))) ?
+                (access::ifAccesss("pratique")) ?
                     core::elementMenuLink("https://www.cse-invent.com", "Site du CSE", "link") : NULL;
-                (session::access(array(1, 4, 5 , 6))) ?
+                (access::ifAccesss("pratique")) ?
                     core::elementMenuLink("https://" . DOMAIN_EVENTS, "Emargement Salariés", "link") : NULL;
-                (session::access(array(1, 4, 5 , 6))) ?
+                (access::ifAccesss("pratique")) ?
                     core::elementMenuLink("https://" . DOMAIN_CONTROL, "Emargement Contrôleur", "link") : NULL;
-                (session::access(array(1, 4, 5 , 6))) ?
+                (access::ifAccesss("pratique")) ?
                     core::elementMenuLink("https://wiki.cse-invent.com", "Wiki CSE", "link") : NULL;
-                (session::access(array(1, 4, 5 , 6))) ?
+                (access::ifAccesss("pratique")) ?
                     core::elementMenuLink("https://contact.cse-invent.com", "Contact CSE", "link") : NULL;
-                (session::access(array(1, 4, 5 , 6))) ?
+                (access::ifAccesss("pratique")) ?
                     core::elementMenuLink("https://sender.cse-invent.com", "SendPortal CSE", "link") : NULL;
                 echo '</ul>';
 
-                $temp_accordion = array("parametres", "historique");
+                $temp_accordion = array("user", "parametres", "parametre-users", "parametre-teams", "historique");
                 (in_array(core::getGet("p"), $temp_accordion)) ? $_show = "show" : $_show = NULL;
-                (session::access(array(1))) ? 
+                (access::ifAccesss("parametres")) ?
                     core::elementMenuH6("Administration", NULL, "col-admin") : NULL;
                 echo '<ul class="collapse '. $_show .' list-unstyled" id="col-admin" data-parent="#accordion">';
-                (session::access(array(1))) ? 
-                    core::elementMenu("parametres", "/parametres.html", "IT : Paramètres", "tool") : NULL;
-                (session::access(array(1))) ? 
-                    core::elementMenu("historique", "/historique.html", "IT : Historique", "activity") : NULL;
+                (access::ifAccesss("parametre-users")) ?
+                    core::elementMenu("parametre-users", "/parametre-users.html", "Admin : Utilisateurs", "users") : NULL;
+                (access::ifAccesss("parametre-teams")) ?
+                    core::elementMenu("parametre-teams", "/parametre-teams.html", "Admin : Groupes & Droits", "users") : NULL;
+                (access::ifAccesss("historique")) ?
+                    core::elementMenu("historique", "/historique.html", "Admin : Historique", "activity") : NULL;
+                (access::ifAccesss("parametres")) ?
+                    core::elementMenu("parametres", "/parametres.html", "Admin : Paramètres", "tool") : NULL;
                 echo '</ul>';
             ?>
         </ul>

+ 5 - 1
core/views/pages/cms.compte.php

@@ -1,8 +1,12 @@
 <header class="d-flex flex-column flex-md-row align-items-md-center p-3 bg-light ">
 <h2 class="bd-title" id="content">
     <span>Etat des comptes</span>
-    <a href="/?p=compte-upload&add=<?php echo core::getGet("id") ?>" style="position: absolute; right: 0; margin: 38px 40px 0 0;"><button type="submit" class="btn btn-outline-success btn-sm"><span data-feather="plus-square"></span> Charger un CSV</button></a>
 </h2>
+<?php if(access::ifAccesss("compte-upload")){ ?>
+<div class="fix-container-button-nav">
+    <a href="/?p=compte-upload&add=<?php echo core::getGet("id") ?>"><button type="submit" class="btn btn-outline-success btn-sm"><span data-feather="plus-square"></span> Charger un CSV</button></a>
+</div>
+<?php } ?>
 </header>
 <?php   
         $banque = banque::getInitialCompte(core::getGet("id"));

+ 4 - 1
core/views/pages/cms.evenement.php

@@ -1,5 +1,8 @@
 <?php
-
+if (core::getGet("id") == NULL AND access::ifAccesss("add-evenement") == FALSE) {
+    get::page("unknow");
+    exit();
+}
 
 if (core::getGet("id") == NULL) {
     $titre = "Ajouter un évènement";

+ 5 - 1
core/views/pages/cms.evenements.php

@@ -5,8 +5,12 @@
 <header class="d-flex flex-column flex-md-row align-items-md-center p-3 bg-light ">
 <h2 class="bd-title" id="content">
     <span>Listes des évènements</span>
-    <a href="/?p=evenement&add=1" style="position: absolute; right: 0; margin: 38px 40px 0 0;"><button type="submit" class="btn btn-outline-success btn-sm"><span data-feather="plus-square"></span> Ajouter un évènement</button></a>
 </h2>
+<?php if(access::ifAccesss("add-evenement")){ ?>
+<div class="fix-container-button-nav">
+    <a href="/add-evenement.html"><button type="submit" class="btn btn-outline-success btn-sm"><span data-feather="plus-square"></span> Ajouter un évènement</button></a>
+</div>
+<?php } ?>
 </header>
 <?php   
         echo core::filAriane(array(

+ 3 - 3
core/views/pages/cms.historique.php

@@ -1,15 +1,15 @@
 
 <header class="d-flex flex-column flex-md-row align-items-md-center p-3 bg-light ">
 <h2 class="bd-title" id="content">
-    <span>Historique</span>
+    <span>Administration : Historique</span>
 </h2>
 </header>
 <?php   
         echo core::filAriane(array(
-            "current" => "IT : Historique", 
+            "current" => "Historique", 
             "arbo" => array( 
                 "Administration" => NULL,
-                "IT : Historique" => "/historique.html")
+                "Historique" => "/historique.html")
         )); 
 ?>
 <div>

+ 7 - 1
core/views/pages/cms.lottery.php

@@ -1,5 +1,9 @@
 <?php
 
+if (core::getGet("id") == NULL AND access::ifAccesss("add-lottery") == FALSE) {
+    get::page("unknow");
+    exit();
+}
 
 if (core::getGet("id") == NULL) {
     $titre = "Ajouter un tirage au sort";
@@ -48,7 +52,9 @@ if(alert::ifTab()){
         </div>
         <?php if(isset($user["id"]) AND session::getId() != $user["id"]){ ?>
             <div style="float:right; margin: -30px;">
-                <a href="/submit.php?from=lottery-delete&id=<?php echo $lottery["id"] ?>" onclick="return confirm('Voulez-vous supprimer ce tirage au sort ?')" style="position: absolute; right: 0; margin: 0 40px 0 0;"><button type="submit" class="btn btn-outline-danger btn-sm"><span data-feather="trash-2"></span> Supprimer</button></a>
+            </div>
+            <div class="fix-container-button-nav">
+                <a href="/submit.php?from=lottery-delete&id=<?php echo $lottery["id"] ?>" onclick="return confirm('Voulez-vous supprimer ce tirage au sort ?')"><button type="submit" class="btn btn-outline-danger btn-sm"><span data-feather="trash-2"></span> Supprimer</button></a>
             </div>
         <?php } ?>
     </div>

+ 5 - 1
core/views/pages/cms.lotterys.php

@@ -5,8 +5,12 @@
 <header class="d-flex flex-column flex-md-row align-items-md-center p-3 bg-light ">
 <h2 class="bd-title" id="content">
     <span>Listes des tirages au sort</span>
-    <a href="/?p=lottery&add=1" style="position: absolute; right: 0; margin: 38px 40px 0 0;"><button type="submit" class="btn btn-outline-success btn-sm"><span data-feather="plus-square"></span> Ajouter un tirage au sort</button></a>
 </h2>
+<?php if(access::ifAccesss("add-lottery")){ ?>
+<div class="fix-container-button-nav">
+    <a href="/add-lottery.html"><button type="submit" class="btn btn-outline-success btn-sm"><span data-feather="plus-square"></span> Ajouter un tirage au sort</button></a>   
+</div>
+<?php } ?>
 </header>
 <?php   
         echo core::filAriane(array(

+ 41 - 0
core/views/pages/cms.parametre-teams.php

@@ -0,0 +1,41 @@
+<header class="d-flex flex-column flex-md-row align-items-md-center p-3 bg-light ">
+    <h2 class="bd-title" id="content">
+        <span>Administration : Groupes & Droits</span>
+    </h2>
+</header>
+<?php
+echo core::filAriane(array(
+    "current" => "Groupes & Droits",
+    "arbo" => array(
+        "Administration" => NULL,
+        "Groupes & Droits" => "/parametre-teams.html"
+    )
+));
+?>
+
+<div>
+    <table  id="table" 
+            class="table-striped table-hover table-sm" 
+            data-toggle="table" 
+            data-flat="true" 
+            data-url="/json.php?jsonData=parametre-access">
+        <thead>
+            <tr>
+                <th data-sortable="true" data-field="access">Accès</th>
+                <th data-sortable="true" data-field="Administrateur" data-formatter="checkFormatter" data-width="200">Administrateur</th>
+                <th data-sortable="true" data-field="Membre du Bureau du CSE" data-formatter="checkFormatter" data-width="200">Membre du Bureau du CSE</th>
+                <th data-sortable="true" data-field="Elu du CSE" data-formatter="checkFormatter" data-width="200">Elu du CSE</th>
+                <th data-sortable="true" data-field="Modérateur du CMS" data-formatter="checkFormatter" data-width="200">Modérateur du CMS</th>
+                <th data-sortable="true" data-field="Assistance sociale" data-formatter="checkFormatter" data-width="200">Assistance sociale</th>
+            </tr>
+        </thead>
+    </table>
+</div>
+
+<script>
+    function checkFormatter(value) { 
+        if(value === 1){ var color = "#d4edda;"; var txt = "Autorisé"; }
+        else { var color = "#f8d7da"; var txt = "-"; }
+        return '<div with:100% height:20px style="background-color:'+color+'; text-align:center;">' + txt + '</div>'
+    }
+</script>

+ 16 - 1
core/views/pages/cms.parametres-users.php → core/views/pages/cms.parametre-users.php

@@ -1,9 +1,24 @@
+<header class="d-flex flex-column flex-md-row align-items-md-center p-3 bg-light ">
+    <h2 class="bd-title" id="content">
+        <span>Administration : Utilisateurs</span>
+    </h2>
+</header>
+<?php
+echo core::filAriane(array(
+    "current" => "Utilisateurs",
+    "arbo" => array(
+        "Administration" => NULL,
+        "Utilisateurs" => "/parametre-users.html"
+    )
+));
+?>
+
 <?php
     json::create("users");
 ?>
 
 <div style="margin-top:20px;">
-    <a href="/?p=user&add=1" style="position:absolute; right:25px; margin-top:-60px;">
+    <a href="/add-user.html" style="position:absolute; right:25px; margin-top:-60px;">
     <button type="submit" class="btn btn-outline-success btn-sm">
         <span data-feather="plus-square"></span> Ajouter un utilisateur</button>
     </a>

+ 1 - 1
core/views/pages/cms.parametres-debug.php

@@ -7,7 +7,7 @@
                     <a href="/submit.php?from=parametres-json-refresh" onclick="return confirm('Etes-vous certain de vouloir réinitialiser les JSON ?')"><button type="button" class="btn btn-warning">Réinitialisation des JSON</button></a>
                 </div>
         </td>
-        <?php if (session::accessUserByType(1) and session::getId() == 1 and (ENVIRONNEMENT == "DEV" or ENVIRONNEMENT == "PREPROD")) { ?>
+        <?php if (session::getType() == 1 and (ENVIRONNEMENT == "DEV" or ENVIRONNEMENT == "PREPROD")) { ?>
         <td>
             <h4>Outils de débug</h4>
             <div class="element-parametres">

+ 3 - 7
core/views/pages/cms.parametres.php

@@ -6,22 +6,21 @@ $checkDebug = core::isDebug();
 
 <header class="d-flex flex-column flex-md-row align-items-md-center p-3 bg-light ">
     <h2 class="bd-title" id="content">
-        <span>IT : Paramètres</span>
+        <span>Administration : Paramètres</span>
     </h2>
 </header>
 <?php
 echo core::filAriane(array(
-    "current" => "IT : Paramètres",
+    "current" => "Paramètres",
     "arbo" => array(
         "Administration" => NULL,
-        "IT : Paramètres" => "/parametres.html"
+        "Paramètres" => "/parametres.html"
     )
 ));
 ?>
 
 <ul class="nav nav-tabs" id="tab-parametres" role="tablist" style="margin-bottom:20px;">
     <li><a class="nav-link active" href="#parametres-general">Général</a></li>
-    <li><a class="nav-link" href="#parametres-users">Utilisateurs</a></li>
     <li><a class="nav-link" href="#parametres-restore">Backup & restauration</a></li>
     <li><a class="nav-link" href="#parametres-maj">Mise à jour</a></li>
     <li><a class="nav-link" href="#parametres-debug">Debug & développement</a></li>
@@ -31,9 +30,6 @@ echo core::filAriane(array(
     <div id="parametres-general" class="tab-pane fade in active show">
         <?php get::page("parametres-general") ?>
     </div>
-    <div id="parametres-users" class="tab-pane fade">
-        <?php get::page("parametres-users") ?>
-    </div>
     <div id="parametres-restore" class="tab-pane fade">
         <?php get::page("parametres-restore") ?>
     </div>

+ 4 - 2
core/views/pages/cms.proweb-historique-excel.php

@@ -1,9 +1,11 @@
 <header class="d-flex flex-column flex-md-row align-items-md-center p-3 bg-light ">
     <h2 class="bd-title" id="content">
         <span>Proweb : Historique des Excels</span>
-        <a href="proweb-salaries-upload.html" style="position: absolute; right: 0; margin: 38px 40px 0 0;"><button type="submit" class="btn btn-outline-success btn-sm"><span data-feather="file-plus"></span> Importer un fichier Excel</button></a>
-        <a href="https://www.cse-invent.com/gestion/beneficiaire/od/export-etat/124/excel?type=EtatListe_od" target="_blank" style="position: absolute; right: 0; margin: 0 250px 0 0;"><button type="submit" class="btn btn-outline-secondary btn-sm"><span data-feather="link"></span> Exporter tous les salariés depuis Proweb</button></a>
     </h2>
+    <div class="fix-container-button-nav">
+        <a href="proweb-salaries-upload.html"><button type="submit" class="btn btn-outline-success btn-sm"><span data-feather="file-plus"></span> Importer un fichier Excel</button></a>
+        <a href="https://www.cse-invent.com/gestion/beneficiaire/od/export-etat/124/excel?type=EtatListe_od" target="_blank"><button type="submit" class="btn btn-outline-secondary btn-sm"><span data-feather="link"></span> Exporter tous les salariés depuis Proweb</button></a>
+    </div>
 </header>
 <?php   
         echo core::filAriane(array(

+ 6 - 2
core/views/pages/cms.proweb-salaries.php

@@ -5,9 +5,13 @@ $date = ($dateData != NULL) ? " (au " . core::convertDate($dateData, FALSE) . ")
 <header class="d-flex flex-column flex-md-row align-items-md-center p-3 bg-light ">
     <h2 class="bd-title" id="content">
         <span>Proweb : Liste des salariés<?php echo $date ?></span>
-        <a href="proweb-salaries-upload.html" style="position: absolute; right: 0; margin: 38px 40px 0 0;"><button type="submit" class="btn btn-outline-success btn-sm"><span data-feather="file-plus"></span> Importer un fichier Excel</button></a>
-        <a href="https://www.cse-invent.com/gestion/beneficiaire/od/export-etat/124/excel?type=EtatListe_od" target="_blank" style="position: absolute; right: 0; margin: 0 250px 0 0;"><button type="submit" class="btn btn-outline-secondary btn-sm"><span data-feather="link"></span> Exporter tous les salariés depuis Proweb</button></a>
     </h2>
+    <?php if(access::ifAccesss("proweb-salaries-upload")){ ?>
+    <div class="fix-container-button-nav">
+        <a href="proweb-salaries-upload.html" class="fix-button-nav"><button type="submit" class="btn btn-outline-success btn-sm"><span data-feather="file-plus"></span> Importer un fichier Excel</button></a>
+        <a href="https://www.cse-invent.com/gestion/beneficiaire/od/export-etat/124/excel?type=EtatListe_od" target="_blank" class="fix-button-nav"><button type="submit" class="btn btn-outline-secondary btn-sm"><span data-feather="link"></span> Exporter tous les salariés depuis Proweb</button></a>
+    </div>
+    <?php } ?>
 </header>
 <?php
 echo core::filAriane(array(

+ 3 - 1
core/views/pages/cms.rh-historique-excel.php

@@ -6,8 +6,10 @@
 <header class="d-flex flex-column flex-md-row align-items-md-center p-3 bg-light ">
     <h2 class="bd-title" id="content">
         <span>RH : Historique des Excels</span>
-        <a href="/rh-upload-excel.html" style="position: absolute; right: 0; margin: 38px 40px 0 0;"><button type="submit" class="btn btn-outline-success btn-sm"><span data-feather="file-plus"></span> Importer un fichier Excel</button></a>
     </h2>
+    <div class="fix-container-button-nav">
+        <a href="/rh-upload-excel.html" class="fix-button-nav"><button type="submit" class="btn btn-outline-success btn-sm"><span data-feather="file-plus"></span> Importer un fichier Excel</button></a>
+    </div>
 </header>
 <?php   
         echo core::filAriane(array(

+ 5 - 1
core/views/pages/cms.rh-liste-salaries.php

@@ -5,8 +5,12 @@
 <header class="d-flex flex-column flex-md-row align-items-md-center p-3 bg-light ">
     <h2 class="bd-title" id="content">
         <span>RH : Liste des salariés<?php echo $date ?></span>
-        <a href="/rh-upload-excel.html" style="position: absolute; right: 0; margin: 38px 40px 0 0;"><button type="submit" class="btn btn-outline-success btn-sm"><span data-feather="file-plus"></span> Importer un fichier Excel</button></a>
     </h2>
+    <?php if(access::ifAccesss("rh-upload-excel")){ ?>
+    <div class="fix-container-button-nav">
+        <a href="/rh-upload-excel.html" class="fix-button-nav"><button type="submit" class="btn btn-outline-success btn-sm"><span data-feather="file-plus"></span> Importer un fichier Excel</button></a>
+    </div>
+    <?php } ?>
 </header>
 <?php   
         echo core::filAriane(array(

+ 7 - 0
core/views/pages/cms.test.php

@@ -0,0 +1,7 @@
+
+<?php 
+
+core::print_r(access::getArrayTypes());
+
+
+?>

+ 25 - 18
core/views/pages/cms.user.php

@@ -1,30 +1,37 @@
 <?php
-if(core::ifGet("add")) {
+if(core::ifGet("add") AND access::ifAccesss("add-user")) {
     $id_form = '<input type="hidden" name="id" value="add">';
     $submit = "Ajouter un profil";
     $titre = "Ajouter un profil";
     $protect = 0;
 } else {
     
-    if(core::ifGet("id") == FALSE OR (core::ifGet("id") AND session::getId() == core::getGet("id"))){
+    if( core::ifGet("id") == FALSE OR  (core::ifGet("id") AND session::getId() == core::getGet("id"))){
         $user = user::getUserById(session::getId());
         $submit = "Modifier votre profil";
         $titre = "Votre fiche de profil";
         $protect = 1;
     } else {
-        $user = user::getUserById(core::getGet("id"));
-        $submit = "Modifier ce profil";
-        $titre = "Fiche de " . $user["prenom"] . " " . $user["nom"];
-        if($user["deleted"] == 1){
-            $titre .= " (Supprimée)";
-            $protect = 2;
+        if(access::ifAccesss("add-user")){
+            $user = user::getUserById(core::getGet("id"));
+            if(is_array($user)){
+                $submit = "Modifier ce profil";
+                $titre = "Fiche de " . $user["prenom"] . " " . $user["nom"];
+                if($user["deleted"] == 1){
+                    $titre .= " (Supprimée)";
+                    $protect = 2;
+                } else {
+                    $protect = 0;
+                }
+            } else {
+                get::page("unknow"); exit();
+            }
         } else {
-            $protect = 0;
+            get::page("unknow"); exit();
         }
-        
     } 
 
-    $id_form = '<input type="hidden" name="id" value="' . $user["id"] . '">';
+    $id_form = '<input type="hidden" name="id" value="' . $user["id"] . '">'; 
 }
 
 ?>
@@ -32,18 +39,18 @@ if(core::ifGet("add")) {
 <header class="d-flex flex-column flex-md-row align-items-md-center p-3 bg-light row">
     <div class="col-11">
         <h2 class="bd-title" id="content">
-            <span><?php echo $titre ?></span>
-        </h2>
+            <span><?php echo $titre; if(isset($user["last_connect"])){ echo '<span style="margin-left: 15px; font-size: .875rem;">Dernière connexion : ' . $user["last_connect"] ."</span>"; } ?></span>
+        </h2>        
         <?php if(isset($user["id"]) AND session::getId() != $user["id"] AND $protect != 2){ ?>
-            <div style="float:right; margin: -30px;">
-                <a href="/submit.php?from=user-delete&id=<?php echo $user["id"] ?>" onclick="return confirm('Voulez-vous supprimer le compte de <?php echo $user["prenom"] . " " . $user["nom"]; ?> ?')" style="position: absolute; right: 0; margin: 0 40px 0 0;"><button type="submit" class="btn btn-outline-danger btn-sm"><span data-feather="trash-2"></span> Supprimer</button></a>
+            <div class="fix-container-button-nav">
+                <a href="/submit.php?from=user-delete&id=<?php echo $user["id"] ?>" onclick="return confirm('Voulez-vous supprimer le compte de <?php echo $user["prenom"] . " " . $user["nom"]; ?> ?')"><button type="submit" class="btn btn-outline-danger btn-sm"><span data-feather="trash-2"></span> Supprimer</button></a>
             </div>
         <?php } elseif($protect == 2){ ?>
-            <div style="float:right; margin: -30px;">
-                <a href="/submit.php?from=user-restore&id=<?php echo $user["id"] ?>" onclick="return confirm('Voulez-vous restaurer le compte de <?php echo $user["prenom"] . " " . $user["nom"]; ?> ?')" style="position: absolute; right: 0; margin: 0 40px 0 0;"><button type="submit" class="btn btn-outline-danger btn-sm"><span data-feather="package"></span> Restaurer</button></a>
+            <div class="fix-container-button-nav">
+                <a href="/submit.php?from=user-restore&id=<?php echo $user["id"] ?>" onclick="return confirm('Voulez-vous restaurer le compte de <?php echo $user["prenom"] . " " . $user["nom"]; ?> ?')"><button type="submit" class="btn btn-outline-danger btn-sm"><span data-feather="package"></span> Restaurer</button></a>
             </div>
         <?php } ?>
-        <?php if(isset($user["last_connect"])){ echo '<h6>Dernière connexion : ' . $user["last_connect"] .'</h6>'; } ?>
+        
     </div>
 </header>
 

+ 15 - 0
public-cms/css/cms.css

@@ -0,0 +1,15 @@
+
+.bd-title {
+    float :left;
+}
+
+.fix-container-button-nav {
+    position: absolute;
+    right:0;
+    margin-right: 45px;
+}
+
+.fix-button-nav {
+    float :right;
+    margin-left: 5px;
+}

+ 3 - 3
public-cms/submit.php

@@ -4,8 +4,8 @@ session_start();
 
 require_once "../env.inc.php";
 require_once "../access.inc.php";
-require_once "../conf.inc.php";
-require_once DIR_PHP_LAYOUTS . "header.php";
-require_once DIR_PHP_LAYOUTS . "cms.session.php"; 
+require_once "../conf.inc.php"; 
+require_once DIR_PHP_LAYOUTS . "header.php"; 
+require_once DIR_PHP_LAYOUTS . "cms.session.php";
 
 get::submit();