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 :

Nom : table user.PNG
Affichages : 282
Taille : 38,7 Ko
Nom : table user_action.PNG
Affichages : 261
Taille : 30,8 Ko
Nom : table user_permission.PNG
Affichages : 244
Taille : 26,1 Ko
Nom : table user_role.PNG
Affichages : 261
Taille : 18,0 Ko

class/Users.php

Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
 
require('../include/inc-config.php');
 
$filename = basename( __FILE__ );
require('../process/process-user-permission.php');
 
require('menu.php');