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 :

roles user group [3.x]


Sujet :

Symfony PHP

  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2013
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2013
    Messages : 3
    Points : 3
    Points
    3
    Par défaut roles user group
    Bonjour,

    J'utilise FOSUser afin de gérer les utilisateurs et les groupes d'un site.

    Un utilisateur peut avoir plusieurs groupes,

    et j'aimerai que chaque groupe peut contenir des utilisateurs avec différents rôles.

    Ma question est :

    Comment faire pour qu'un utilisateur ait la possibilité d'avoir un rôle différent dans chaque groupe auquel il appartient?

    Par exemple un utilisateur pourrait être un simple USER dans un groupe A et donc serait limiter au niveau

    des actions dans ce groupe.

    Mais il peut être également ADMIN dans un groupe B et avoir plus d'actions possibles.

    J'ai penser à faire une table intermédiaire UserGroup avec un attribut indiquant le rôle d'un utilisateur pour un groupe.

    Que pensez vous de cette solution ? Existe t-il une meilleure solution?

    Merci d'avance

  2. #2
    Membre éprouvé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Novembre 2013
    Messages
    739
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Novembre 2013
    Messages : 739
    Points : 1 022
    Points
    1 022
    Par défaut
    Bonjour,
    il suffit d'utiliser les entités user et group offerts par FOSUserBundle.
    ManyToMany entre group et user.

    Un utilisateur pourrait être un simple USER dans un groupe A ( qui a un role ROLE_USER par exemple )
    et il peut être également ADMIN dans un groupe B ( qui a un role ROLE_ADMIN par exemple ) et avoir plus d'actions possibles.


    Pendant sa session , cet utilisateur va benificer des la reunion des roles des tous les groupes auqel il appartient .

    la doc ici





    Pensez à valoriser les réponses pertinantes, cliquez sur le bouton vert +1 pour indiquer votre accord avec la solution proposée.
    Pensez à utiliser la balise [code] pour afficher du code, elle est cachée sous le bouton [#] dans l'éditeur.
    Une discussion est terminée ? Alors le bouton est votre ami !

  3. #3
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2013
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2013
    Messages : 3
    Points : 3
    Points
    3
    Par défaut
    Merci pour votre temps,

    Citation Envoyé par MehrezLabidi Voir le message

    Pendant sa session , cet utilisateur va benificer des la reunion des roles des tous les groupes auqel il appartient .

    Le problème est bien là, c'est que si il est sur une page d'un groupe spécifique il va jouir de l'ensemble des rôles qu'il possède, même ceux des autres groupes auxquels il appartient.

    Or, j'aimerai que lorsqu'il est sur une page d'un groupe A dont il est l'admin, il puisse effectuer les actions d'un admin.
    Et lorsqu'il est sur la page d'un groupe B dont il est juste un utilisateur basique, il soit restreint au niveau des actions.

    Donc avec la solution d'une simple relation ManyToMany, l'utilisateur , s'il est dans un groupe ADMIN, aura automatiquement le rôle
    ADMIN quelque soit la page du site.

    J'espère être compréhensible....

  4. #4
    Membre éprouvé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Novembre 2013
    Messages
    739
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Novembre 2013
    Messages : 739
    Points : 1 022
    Points
    1 022
    Par défaut
    voila une proposition :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
      protected function getRoles($group) {
           $roles = array();
             foreach ($this->getGroups() as $grp) {
    		 if($group == $grp){
                $roles = array_merge($roles, $grp->getRoles());
    			}
            }
            return $roles ;
        }
    pour chaque action controlleur , tu précise le groupe responsable.
    Le retour de la fonction est un array des roles que l'utilisateur courant a pour ce groupe, ensuite dans la vue tu filtres avec des " if "

  5. #5
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2013
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2013
    Messages : 3
    Points : 3
    Points
    3
    Par défaut
    je vais creuser cette solution;

    Merci pour votre réponse

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

Discussions similaires

  1. [APACHE] User/group configuration
    Par djshaker dans le forum Apache
    Réponses: 3
    Dernier message: 14/04/2006, 16h12
  2. "roles" ou "groupe d'utilisateurs"
    Par Equus dans le forum Débuter
    Réponses: 5
    Dernier message: 02/03/2005, 11h39

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