Génération de menus dynamiques et habilitations

Génération de menus dynamiques et habilitations - PHP - Programmation

Marsh Posté le 19-07-2006 à 21:26:56    

Bonjour,
 
Je suis actuellement en train de développer un CMS. Il est basé sur un système de modules, qui s'intègrent au CMS. Chacun des modules possèdent des fonctionnalités auxquelles ont peu ou non donner l'accès à l'utilisateur (enfin ça c'est sur le papier).  
 
Le CMS est divisé en rubriques, dans lesquelles je stocke des pages, contenant 1 ou plusieurs fonctionnalités (style afficher des news, afficher une galerie, poster une news, ...), tout ça mappé dans la base de données. L'accès est donné par rôle ou par utilisateur, pour telle ou telle fonctionnalité.
 
Pour gérer le truc, je pensait faire une couche habilitation/authentification, qui vérifierait, avant d'afficher la page, que l'utilisateur a accès à au moins l'une des fonctionnalités présentes sur cette page. Le problème viens de la génération des liens. Comment faire pour que l'utilisateur n'ait affiché à l'écran que les liens vers les pages auxquelles il aura accès ? De mon côté, ça fait 2 jours que je m'y casse la tête dessus et j'ai toujours rien trouvé, alors si quelqu'un a une idée ...

Reply

Marsh Posté le 19-07-2006 à 21:26:56   

Reply

Marsh Posté le 19-07-2006 à 22:09:10    

Jvois pas de problèmes:
tu fais un systèmes d'auth pour les users:
Dès qu'il se logue => session (+cookie eventuellement)
Tu peux par ex défini des degrés de users dans t'as DB, quand l'user se logue, sa stocke son degrés dans sa session.
Tu fais une fonction toute bête qui check si c'est un user ou pas (donc en utilisant l'eventuelle session), qui par ex retourne le degrés d'user s'il est loggué (-1 si non loggué).
 
T'as plus qu'a faire un switch après
 
menu.php

Code :
  1. <?php
  2. $degre=auth()
  3. switch($degre)
  4. {
  5.     case -1:
  6.           // tu fou la le menu de base
  7.           echo '<a href="inscription">Inscription</a>';
  8.           break;
  9.     case 1: //simple user
  10.           echo '<a href="compte">Mon compte</a>';
  11.           break;
  12.     case 2: //utilisateur avancé
  13.     ...
  14. }
  15. ?>


---------------
Comme dirait quelqu'un de beaucoup plus avisé que moi, quelquefois c'est toi qui cognes le bar mais d'autres fois, et ben, c'est le bar qui te cogne.
Reply

Marsh Posté le 20-07-2006 à 08:11:40    

J'avais oublié de le préciser mea culpa... mais les différents degrés d'utilisateurs sont entièrement paramétrables... Je viens de penser à créer une fonction addLink($page) qui pourrait tester si l'utilisateur a le droit de consulter la page (en gros, s'il a accès à au moins une des fonctionnalités de la page), mais ça fait beaucoup d'accès en plus à la base de donnés, non ?

Reply

Marsh Posté le 20-07-2006 à 08:50:07    

Ce que je comprend alors c'est que chaque utilisateurs aura un degrés completement différent c'est ca ?
Va y'avoir bcp de pages ?
 
edit: t'as 2 solutions, soit tu fais une table de correspondace entre les pages et les utilisateurs.
Soit quand tu charges une page tu fais appel à une fonction qui va taper dans la base
Soit à l'ouverture de la session tu stockes toutes les pages aux quelles l'user à droit. Mais ca me parait bien lourd et pas très gerable. Donc à par la premire solution.
 
Ceci dit si t'as 500 utilisateurs avec 500 droits différents... bonjour la gestion... enfin je dit ça je dit rien :D


Message édité par Kyfun le 20-07-2006 à 08:54:52
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed