Merci d'avance et bonne soirée.
class/userManager.php
public function displayMenu($user_role_id) {
try {
$sql = 'SELECT a.name, a.slug
FROM user_action AS a
INNER JOIN user_permission AS p
ON a.actionID = p.actionID
INNER JOIN user_role AS r
ON p.roleID < :user_role_id';
$stmnt = $this->db->prepare($sql);
$stmnt->execute(array(
':user_role_id' => $user_role_id
));
while($row = $stmnt->fetch(PDO::FETCH_ASSOC)) {
$menu_data[] = $row;
}
if(isset($menu_data)) {
return $menu_data;
}
else {
return false;
}
}
catch(PDOException $e) {
echo 'Une erreur est survenue lors de la récupération d\'une des données dans la base.<br>
Message d\'erreur : ' . $e->getMessage();
}
}
public function checkUserPermission($action_slug, $user_role_id) {
try {
$sql = 'SELECT p.actionID, p.roleID
FROM user_permission AS p
INNER JOIN user_action AS a
ON p.actionID = a.actionID
AND a.slug = :action_slug';
$stmnt = $this->db->prepare($sql);
$stmnt->execute(array(
':action_slug' => $action_slug
));
while($row = $stmnt->fetch(PDO::FETCH_ASSOC)) {
if($row['p.roleID'] > $user_role_id) {
return false;
}
else {
return true;
}
}
}
catch(PDOException $e) {
echo 'Une erreur est survenue lors de la récupération d\'une des données dans la base.<br>
Message d\'erreur : ' . $e->getMessage();
}
}
process/process-display-menu.php
$level = isset($_SESSION['r.level']) ? $_SESSION['r.level'] : NULL;
$manager = new userManager($db);
$menu_items = $manager->displayMenu($level);
$menu_html = '';
if(!empty($menu_items)) {
foreach($menu_items as $menu_item) {
$name = $menu_item['name'];
$slug = $menu_item['slug'];
$menu_html .= '<li><a href="' . $slug . '.php">' . $name . '</a></li>' . "\n";
}
}
process/process-user-permission.php
$action_slug = substr($filename, 0, 4);
$level = isset($_SESSION['r.level']) ? $_SESSION['r.level'] : NULL;
$manager = new userManager($db);
$userPermission = $manager->checkUserPermission($action_slug, $level);
if($userPermission === false) {
echo 'Erreur. Cette page n\'existe pas.';
exit;
}
admin/menu.php
require('../process/process-display-menu.php');
<ul class="menu">
<?php echo $menu_html; ?>
<li><a href="../index.php">Site web</a></li>
<li><a href="logout.php">Déconnexion</a></li>
</ul>
admin/index.php
require('../include/inc-connexion.php');
require('../include/inc-config.php');
require('../include/inc-identification-user.php');
$filename = basename( __FILE__ );
require('../process/process-user-permission.php');
require('menu.php');