La gestion de l'autorisation de menu en est une partie importante lors de l'élaboration de certains systèmes de gestion des autorisations basées sur des rôles. Afin d'activer différents utilisateurs ou rôles pour accéder à différents éléments de menu, nous pouvons utiliser la fonction intégrée de PHP Array_Diff () pour comparer et filtrer les éléments de menu à laquelle les utilisateurs peuvent accéder. Cet article présentera comment utiliser la fonction Array_Diff () pour implémenter un système de gestion des autorisations de menu différencié.
Dans PHP, la fonction Array_Diff () peut être utilisée pour comparer deux tableaux ou plus, des éléments de retour qui existent dans le premier tableau mais qui ne sont pas dans d'autres tableaux. Son utilisation de base est la suivante:
array_diff(array $array1, array $array2, array ...$arrays): array
Cette fonction renvoie un tableau contenant des éléments dans $ array1 mais pas dans $ array2 et autres tableaux.
Dans la gestion de l'autorisation de menu, chaque utilisateur a un ensemble d'identifiants d'autorisation (généralement l'ID de l'élément de menu), et le système décide quels menus afficher en fonction du rôle de l'utilisateur. Nous pouvons utiliser la fonction Array_Diff () pour faire une différence entre le menu complet de l'administrateur et le menu d'utilisateurs ordinaires, obtenant ainsi des autorisations de menu différenciées.
Tout d'abord, nous définissons un tableau contenant tous les éléments de menu et un tableau d'autorisations pour chaque utilisateur. Par exemple, supposons que nous ayons un système avec plusieurs éléments de menu, chaque élément de menu a un ID unique.
// Tous les éléments du menu du système
$all_menus = [
1 => 'première page',
2 => 'Gestion des utilisateurs',
3 => 'Gestion des produits',
4 => 'Gestion des commandes',
5 => 'États financiers',
6 => 'Paramètres du système'
];
// Autorisations de menu de l'administrateur
$admin_permissions = [1, 2, 3, 4, 5, 6]; // Les administrateurs peuvent accéder à tous les menus
// Autorisations de menu pour les utilisateurs ordinaires
$user_permissions = [1, 2, 3, 4]; // Les utilisateurs ordinaires ne peuvent accéder qu'à certains menus
Ensuite, nous utilisons array_diff () pour obtenir la partie différenciée du menu administrateur et du menu utilisateur ordinaire. Le menu que nous voulons retourner est un élément de menu que les utilisateurs ordinaires n'ont pas la permission d'accès, c'est-à-dire un élément de menu que les administrateurs ont mais les utilisateurs ordinaires n'ont pas.
// Obtenez la différence entre l'administrateur et les menus utilisateur normaux
$diff_permissions = array_diff($admin_permissions, $user_permissions);
// Imprimer les autorisations de menu différencié
echo "Autorisations de menu administrateur-exclusive:\n";
foreach ($diff_permissions as $menu_id) {
echo $all_menus[$menu_id] . "\n";
}
Grâce au code ci-dessus, nous pouvons publier des éléments de menu que l'administrateur propose mais ne peut pas accéder aux utilisateurs ordinaires. Les résultats de l'exécution sont les suivants:
Autorisations de menu administrateur-exclusive:
États financiers
Paramètres du système
Dans le système réel de gestion des autorisations, nous devons également afficher dynamiquement différents liens de menu en fonction des autorisations de l'utilisateur. En supposant que l'élément de menu doit être lié à une URL spécifique, nous pouvons inclure l'URL dans le tableau de menu et filtrer l'URL en même temps lorsque les autorisations sont filtrées.
// Bande de définition URL Éléments de menu
$menus_with_url = [
1 => ['name' => 'première page', 'url' => 'https://www.m66.net/home'],
2 => ['name' => 'Gestion des utilisateurs', 'url' => 'https://www.m66.net/user-management'],
3 => ['name' => 'Gestion des produits', 'url' => 'https://www.m66.net/product-management'],
4 => ['name' => 'Gestion des commandes', 'url' => 'https://www.m66.net/order-management'],
5 => ['name' => 'États financiers', 'url' => 'https://www.m66.net/financial-report'],
6 => ['name' => 'Paramètres du système', 'url' => 'https://www.m66.net/system-settings']
];
// Obtenez la différence entre l'administrateur et les menus utilisateur normaux
$diff_permissions = array_diff($admin_permissions, $user_permissions);
// Les menus différenciés imprimés et leur URL
echo "Autorisations de menu administrateur-exclusive及链接:\n";
foreach ($diff_permissions as $menu_id) {
echo $menus_with_url[$menu_id]['name'] . " - " . $menus_with_url[$menu_id]['url'] . "\n";
}
Les résultats de l'exécution ressembleront à ceci:
Autorisations de menu administrateur-exclusive及链接:
États financiers - https://www.m66.net/financial-report
Paramètres du système - https://www.m66.net/system-settings
Grâce à la méthode ci-dessus, nous utilisons la fonction Array_Diff () de PHP pour implémenter un système de gestion des autorisations de menu différencié. Les administrateurs peuvent accéder à tous les menus, tandis que les utilisateurs ordinaires ne peuvent accéder qu'à des menus autorisés. Combiné avec l'URL, nous pouvons fournir des liens d'accès pour chaque élément de menu afin d'améliorer davantage l'expérience utilisateur.
De cette façon, nous pouvons non seulement afficher dynamiquement les menus auxquels les utilisateurs ont la permission d'accès, mais également contrôler efficacement les éléments de menu visibles pour des utilisateurs spécifiques. Vous pouvez étendre cette fonction en fonction des besoins réels et ajouter plus de logique de contrôle d'autorisation.