4 pièce(s) jointe(s)
espace admin avec rôles et permissions
Bonjour, petit problème pour l'affichage des liens vers les pages autorisés pour tel ou tel utilisateur. (Administrateur, Editeur, etc.).
Le var_dump($menu_items) => C:\wamp64\www\projet-images-en-poo-et-pdo\process\process-display-menu.php:9 : booléen faux
Une petite aide serais sympa, voici mon code :
Pièce jointe 616730
Pièce jointe 616731
Pièce jointe 616732
Pièce jointe 616733
class/Users.php
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95
|
class Users {
function displayMenu($user_role_id) {
$mysqli = new mysqli('localhost', 'root', '', 'projet_image');
$mysqli->set_charset("utf8");
if($mysqli->connect_errno) {
printf("Echec de la connexion: %s\n", $mysqli->connect_error);
exit();
}
$sql = 'SELECT A.name, A.slug
FROM user_action AS A
INNER JOIN user_permission AS P
ON(A.actionID = P.actionID
AND P.roleID < "' . $user_role_id . '")';
$result = $mysqli->query($sql);
if(!$result) {
echo 'Une erreur est survenue lors de la récupération des données
dans la base. Message d\'erreur : ' . $mysqli->error;
return false;
}
else {
while($row = $result->fetch_array()) {
$menu_data[] = $row;
}
if(isset($menu_data)) {
return $menu_data;
}
else {
return false;
}
}
$mysqli->close();
}
function checkUserPermission($user_role_id, $action_slug) {
$mysqli = new mysqli('localhost', 'root', '', 'projet_image');
$mysqli->set_charset("utf8");
if($mysqli->connect_errno) {
printf("Echec de la connexion: %s\n", $mysqli->connect_error);
exit();
}
$sql = 'SELECT P.actionID, P.roleID
FROM user_permission AS P
INNER JOIN user_action AS A
ON(A.slug = "' . $action_slug . '"
AND P.actionID = A.actionID)';
$result = $mysqli->query($sql);
if(!$result) {
echo 'Une erreur est survenue lors de la récupération des données
dans la base. Message d\'erreur : ' . $mysqli->error;
return false;
}
else {
while($row = $result->fetch_array()) {
if($row['P.roleID'] > $user_role_id) {
return false;
}
else {
return true;
}
}
}
$mysqli->close();
}
} |
process/process-display-menu.php
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
|
$roleID = isset($_SESSION['r.roleID']) ? $_SESSION['r.roleID'] : NULL;
$user = new Users();
$menu_items = $user->displayMenu($roleID);
var_dump($menu_items);
$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
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
|
require('../class/Users.php');
$action_slug = substr($filename, 0, 4);
$level = isset($_SESSION['level']) ? $_SESSION['level'] : NULL;
$user = new Users();
$userPermission = $user->checkUserPermission($action_slug, $level);
if($userPermission === false) {
echo 'Erreur. Cette page n\'existe pas.';
exit;
} |
admin/menu.php
Code:
1 2 3 4 5 6 7 8 9 10 11 12
|
<?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
Code:
1 2 3 4 5 6 7
|
require('../include/inc-config.php');
$filename = basename( __FILE__ );
require('../process/process-user-permission.php');
require('menu.php'); |