IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Symfony PHP Discussion :

question sur les rôles [2.x]


Sujet :

Symfony PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre extrêmement actif
    Avatar de dukoid
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2012
    Messages
    2 100
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2012
    Messages : 2 100
    Par défaut question sur les rôles
    Booooooooooooooooooonjour,



    je voudrais mettre en place un système de rôle un peu particulier.

    en effet, disons que j'ai 5 pages et donc pour acceder à ces pages avoir le role correspondant: role_age1, role_page2, role_page3 ....
    jusque là ça va, c'est facile. the finger in the noise .... la lambada


    maintenant je veux donner en plus des droits d'édition, de suppression, d'enregistrement qui sont différents pour chaque page et bien sur en fonction des utilisateur

    et là c'est le drame, je ne sais pas comment faire.


    j'ai une piste mais je ne sais pas si c'est une bonne façon de faire ? ( car du coup ça fait une longue liste de rôle à créer )

    exemple des differents rôles:
    role_page1 (accès à la page 1)
    role_page1_lecture
    role_page1_suppression
    role_page1_enregistrement

    role_page2 (accès à la page 2)
    role_page2_lecture
    role_page2_suppression
    role_page2_enregistrement
    ...

    user1 a les rôles suivants : role_page1, role_page1_lecture, role_page1_suppression
    user2 a les rôles suivants : role_page2, role_page2_enregistrement

  2. #2
    Membre éclairé Avatar de Philcmoi
    Homme Profil pro
    Inscrit en
    Juillet 2006
    Messages
    666
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 666
    Par défaut
    bonjour. Il serait bon d'utiliser un tableau associatif

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    Role    Page      Create    Read  Update       Delete
    1        1        1         1         0        0
    1        3        0         1         0        0
    2        1        1         1         1        1
    3        2        0         0         0        0
     
    CRUD ont pour valeur 
    0 pas d'autorisation
    1 autorisation
     
    Une personne de role 1 pourrait lire la page 1 et 3 avec ses droit sur tel page. c'est un plus.
    voila à toi de voir

  3. #3
    Expert confirmé
    Avatar de Watilin
    Homme Profil pro
    En recherche d'emploi
    Inscrit en
    Juin 2010
    Messages
    3 100
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : En recherche d'emploi

    Informations forums :
    Inscription : Juin 2010
    Messages : 3 100
    Par défaut
    Salut,

    je suggère une table dans une base de données. (Entre parenthèses les types de champs.)
    id_user (BIGINT UNSIGNED) role_page1_lecture (BOOL) role_page1_ecriture (BOOL) role_page1_suppression (BOOL) role_page2_lecture (BOOL) role_page2_ecriture (BOOL) role_page2_suppression (BOOL)
    1 TRUE TRUE TRUE TRUE FALSE FALSE
    2 TRUE FALSE FALSE TRUE TRUE FALSE
    etc.

    Bien sûr, ça fait beaucoup de colonnes. Une autre solution serait de s'inspirer du système de droits Unix : coder tous les droits sur le même octet (style 101 en binaire ( = 5 en décimal) qui signifie lecture et suppression mais pas écriture), ou bien une chaîne de caractères (par exemple rwx ou encore rw- : r signifie lecture (read), w écriture (write) et x suppression ; le tiret - signifie qu'on n'a pas le droit correspondant).

    Le binaire est plus efficace si tu es à l'aise avec les opérations binaires. Sinon, manipuler les chaînes (avec stripos par exemple) sera sans doute plus facile. Du coup, la table ressemblerait à ça :
    id_user (BIGINT UNSIGNED) role_page1 (CHAR(3)) role_page2 (CHAR(3))
    1 rwx r--
    2 r-- rw-
    etc.

    Voici donc deux variantes d'une même solution. Choisis celle que tu préfères.

    Je ne sais pas si c'est une bonne façon de faire, notamment car elle t'oblige à modifier la structure de ta table (ajouter des colonnes) quand tu ajoutes des pages. Je n'ai jamais rencontré ce genre de besoins, mais c'est comme ça que je ferais
    La FAQ JavaScript – Les cours JavaScript
    Touche F12 = la console → l’outil indispensable pour développer en JavaScript !

  4. #4
    Membre éclairé Avatar de Philcmoi
    Homme Profil pro
    Inscrit en
    Juillet 2006
    Messages
    666
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 666
    Par défaut
    Oui dans une table de bdd oui ca serait bien.

  5. #5
    Membre extrêmement actif
    Avatar de dukoid
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2012
    Messages
    2 100
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2012
    Messages : 2 100
    Par défaut
    merci les amis pour vos indications.

    seulement, je ne voulais pas accéder à la base pour savoir si une personne peut accéder ou pas à une page et avec quel droit.


    en effet, on peux récupérer le ou les rôles du user connecté à partir de sa session.
    et donc je voulais savoir si il y avais une solution de ce coté

  6. #6
    Expert confirmé
    Avatar de Watilin
    Homme Profil pro
    En recherche d'emploi
    Inscrit en
    Juin 2010
    Messages
    3 100
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : En recherche d'emploi

    Informations forums :
    Inscription : Juin 2010
    Messages : 3 100
    Par défaut
    Citation Envoyé par dukoid
    en effet, on peux récupérer le ou les rôles du user connecté à partir de sa session
    Peux-tu préciser ce point ?
    La FAQ JavaScript – Les cours JavaScript
    Touche F12 = la console → l’outil indispensable pour développer en JavaScript !

  7. #7
    Membre extrêmement actif
    Avatar de dukoid
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2012
    Messages
    2 100
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2012
    Messages : 2 100
    Par défaut
    et bien par exemple dans un controleur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
     if ( $this->get('security.context')->isGranted('ROLE_ADMIN') ) {
    ....
    }
    ou alors dans une vue:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    {% if is_granted('ROLE_ADMIN') %} ... {% endif %}

    et donc moi je veux le même système..

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Questions sur les rôles
    Par JackylRadis dans le forum SSAS
    Réponses: 2
    Dernier message: 04/06/2012, 11h15
  2. [UC] Clarification sur les rôles utilisateurs / Questions générales
    Par MakaveliFr dans le forum Cas d'utilisation
    Réponses: 5
    Dernier message: 08/11/2007, 09h27
  3. Question sur les rôles
    Par freud dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 01/10/2007, 11h24
  4. Question sur les handles et les couleurs...
    Par MrDuChnok dans le forum C++Builder
    Réponses: 7
    Dernier message: 29/10/2002, 08h45
  5. question sur les message box !
    Par krown dans le forum Langage
    Réponses: 7
    Dernier message: 02/08/2002, 16h11

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo