Laravel 5

Menu et Autorisation

  • Avatar de davidpro
    Membre depuis :
    26/02/2017
    Messages :
    5

    Bonjour,

    Jai un model User, et un model MenuItem
    Ma table users contient un champ is_admin. si il est admin, alors ca me renvoi toute la collection d'item. Par contre, si il nest pas admin, je souhaiterai que le menu soit filtre et n'est acces que a certain element predefini en base (via une table annexe).
    Je ne sais pas comment m'y prendre.
    Merci !

  • Avatar de bestmomo
    Membre depuis :
    07/04/2013
    Messages :
    1644

    Bonsoir,

    Il faudrait ajouter une colonne dans la table menuitems pour distinguer ce qui doit être affiché pour les administrateurs.

  • Avatar de davidpro
    Membre depuis :
    26/02/2017
    Messages :
    5

    Bonjour
    Apparemment je me suis mal exprime!
    Lidee est que les non admin nont pas acces a tout , mAis seulement a certain items. Mais 2 non-Admin nont pas obligatoirement le meme menu. Tout depend de leur droit dacces.
    Jai pense creer un model (+une table) UserAccess qui contient le user-id, Le type (ex: Menu), et type-id. Qui apres charge une premiere Fois, reste par la suite en cache, et ce model permet de savoir si tel menu est accessible ou pas. Le process est bon?

  • Avatar de bestmomo
    Membre depuis :
    07/04/2013
    Messages :
    1644

    Salut,

    Oui appremment je n'avais pas bien compris. Donc les utilisateurs ont des rôles différents et ça conditionne l'apparence des menus. La façon classique de traiter ça est de créer une table roles reliée à users avec une relation 1:n si un utilisateur ne peut avoir qu'un rôle ou n:n s'il peut en avoir plusieurs. Ces rôles peuvent aussi être associés à une table permissions pour détailler les permissions par rôle.

    En fait tout dépend des fonctionnalités désirées. Il existe plusieurs packages qui réalisent ça, j'aime bien celui-ci, mais le plus utilisé est entrust. Mais pour une approche simple on peut se passer de package.

  • Avatar de davidpro
    Membre depuis :
    26/02/2017
    Messages :
    5

    Bonjour,

    merci pour ta reponse BestMomo. En fait, vu que chaque operateur ont des droit vraiment different et bien personnalisable, je prefere directement un lien entre users et permissions sans passer par une table intermediaire role. Ma table permission serait : id, user_id, type (menu dans mon cas), type_id (l'id du menu dans mon cas). mais jai un doute si il faut creer aussi une table de pivot, car cest une relation n:n apparemment...
    Merci de m'aiguiller !

  • Avatar de bestmomo
    Membre depuis :
    07/04/2013
    Messages :
    1644

    Salut,

    Si je comprends bien tu as plusieurs menus, et pour chacun tu veux définir les permissions de chaque utilisateur sur les items. Dans ce cas il me semble que ce schéma serait adapté :

    Table menus :

    • id
    • name

    Table items :

    • id
    • menu_id
    • item

    Table pivot item_user :

    • id
    • item_id
    • user_id

    Avec donc une relation de un à plusieurs entre menus et items et de plusieurs à plusieurs entre items et users.

Vous ne pouvez pas répondre à ce sujet.