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 :

Gestion des droits sur les modules


Sujet :

Symfony PHP

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Février 2010
    Messages
    267
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 267
    Points : 101
    Points
    101
    Par défaut Gestion des droits sur les modules
    Bonjour,
    je souhaite gérer les droits d'accès sur des modules de mon application, j'ai installé sfDoctrineGuardPlugin qui fonctionne trés bien, maintenant je souhaiterai attribuer des utilisateur sur chaque module.

    Donc est il possible de rediriger des utilisateurs sur des modules spécifiques? et les bloqués sur les autres modules?

    Lors d'une connexion sur un module si l'utilisateur n'a pas le droit d'accès je souhaiterai qu'il reste bloqué sur la page d'authentification et non redirigé sur la page secureSuccess qui indique qu'il n'a pas les permissions nécessaires.

    J'ai sécurisé tous un des modules comme ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    default:
      is_secure: true
      credentials:groupe3
    qui indique que seul le groupe trois à les permissions mais les autres groupes sont redirigé sur la page secureSuccess et non bloqué sur l'interface signin.
    De plus, avec cette methode l'utilisateur est quand même logué sur le module sauf qu'il n'a pas les permissions pour l'afficher alors que je souhaiterai qu'il ne puisse pas s'y loguer.

    merci pour votre aide

  2. #2
    Expert éminent
    Avatar de Michel Rotta
    Homme Profil pro
    DPO
    Inscrit en
    Septembre 2005
    Messages
    4 954
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : DPO
    Secteur : Distribution

    Informations forums :
    Inscription : Septembre 2005
    Messages : 4 954
    Points : 8 486
    Points
    8 486
    Par défaut
    Avec sfGuard les droits sont indépendant des groupes, mais rattachés à eux, c'est donc les droits qui doivent figurer dans le fichier yml, PAS le nom des groupes.

    Symfony gère deux type d'intervention si ton utilisateur n'a pas les droits spécifié. Soit il est loggé et est redirigé vers la page (perdu le nom) qui indique qu'il ne peut pas accéder à ce module (mais tu peux la changer et le rediriger sur le menu principale. Soit il n'est pas loggé et est redirigé sur la page de login.

    Maintenant, tu n'es pas obligé de gérer les droits dans les fichiers de config et tu peux le faire depuis le code de l'action avec des hasCredential() de l'objet user. Après, s'il n'a pas les droites, tu vais ce que tu veux et tu redirige où tu veux. J'utilise de plus en plus cette méthode, plus souple, avec la génération d'un message flash, qui sera affiché sur la page de base de l'utilisateur.

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Février 2010
    Messages
    267
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 267
    Points : 101
    Points
    101
    Par défaut
    merci pour ta réponse,
    je n'ai peut être pas été clair dans la rédaction de mon problème, je souhaite gérer les droits de connexion sur les modules des groupes d'utilisateurs et non les permissions sur ces modules, et si un groupe n'as pas ce droit de connexion il ne peut pas se connecter sur le module je souhaite qu'il reste bloqué sur la page de login et non qu'il soit redirigé par secureSuccess.php.

    par exemple j'ai un utilisateur Robert qui fait partie du groupe Service_financier il a les droit de ce connecter sur le module comptabilité mais il n'a pas le droit de ce connecté sur le module marketing.

  4. #4
    Expert éminent
    Avatar de Michel Rotta
    Homme Profil pro
    DPO
    Inscrit en
    Septembre 2005
    Messages
    4 954
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : DPO
    Secteur : Distribution

    Informations forums :
    Inscription : Septembre 2005
    Messages : 4 954
    Points : 8 486
    Points
    8 486
    Par défaut
    Oui, mais Robert est déjà connecté sur le module comptabilité sur lequel il travail. Il se plante et clique sur un lien vers le module marketing.

    Il doit alors remettre son id et passe ?

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Février 2010
    Messages
    267
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 267
    Points : 101
    Points
    101
    Par défaut
    tous mes modules sont indépendants entre eux donc aucun lien et si c'est le cas je rajouterai un credential pour afficher un bouton ou non

  6. #6
    Expert éminent
    Avatar de Michel Rotta
    Homme Profil pro
    DPO
    Inscrit en
    Septembre 2005
    Messages
    4 954
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : DPO
    Secteur : Distribution

    Informations forums :
    Inscription : Septembre 2005
    Messages : 4 954
    Points : 8 486
    Points
    8 486
    Par défaut
    En fait, tu veux créer une appli par fonction (comptabilité, marketing).

    Et si une personne à le droit d'entrer dans l'appli, il a alors nécessairement tous les droits sur la comptabilités ??? Suis septique sur la validation par les comptables qui ne vont pas aimer que n'importe qui puisse clôturer un journal ou lancer une clôture de fin d'année, ou consulter les écritures de paye...

    Si c'est cela que tu veux, effectivement, tu peux te passer de l'écran d'absence de droits il suffit de le rediriger vers l'écran de login.

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Février 2010
    Messages
    267
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 267
    Points : 101
    Points
    101
    Par défaut
    oui je veut créer une appli avec des modules qui regroupent des fonctions,
    et si une personne à le droit de rentrer sur le module comptabilité c'est donc qu'il a les droits de base sur ce module et qu'il est comptable.
    Ensuite chaque comptable peut avoir des droits spécifiques une fois logué par exemple clôturer un journal (mais cette action sera ouverte par un credential) donc seulement l'utilisateur habilité pourra effectuer cette action.

    Voila comment je vois les choses mais je me trompe peut être totalement c'est pour cela d'ailleurs que je demande de l'aide

    et merci par avance

  8. #8
    Expert éminent
    Avatar de Michel Rotta
    Homme Profil pro
    DPO
    Inscrit en
    Septembre 2005
    Messages
    4 954
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : DPO
    Secteur : Distribution

    Informations forums :
    Inscription : Septembre 2005
    Messages : 4 954
    Points : 8 486
    Points
    8 486
    Par défaut
    C'est une idée qui peut simplifier le développement.

    Cela te donnerai une structure du genre :
    apps/<marketing>/...
    apps/<compta>/...

    Mais dans ton propos tu dis : "chaque comptable peut avoir des droits spécifiques" et "cette action sera ouverte par un credential"

    Ceci me pose la question, qu'arrive-t-il à ce comptable, d'après ce que tu souhaites, il se retrouve viré de l'appli devant son écran de loggin. Il pourrait être possible de n'afficher que les liens autorisés, mais cela n'empêche pas l'utilisateur de taper l'url en directe... et donc d'avoir a gérer le cas en question.

    Pour ma part, mais je ne sais pas exactement ce que tu veux mettre en oeuvre, je partirais plutôt sur un loggin et l'accès aux options possible, après tout, il reste possible qu'un comptable fasse aussi du budget ou du marketing (j'ai déjà vu). S'il doit passer son temps à ce logger il va finir par automatiser la chose, ce qui va faire disparaître la sécurité. "Trop de sécurité tue la sécurité".

  9. #9
    Membre régulier
    Profil pro
    Inscrit en
    Février 2010
    Messages
    267
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 267
    Points : 101
    Points
    101
    Par défaut
    je ne sais pas trop qu'elle est la meilleur solution, il faudra que je l'ai essayent et que je vois avec les futurs utilisateurs.

    Sinon as tu une idée pour gérer les droits de connexion sur les modules et non les permissions à l'intérieur de celui ci?

  10. #10
    Expert éminent
    Avatar de Michel Rotta
    Homme Profil pro
    DPO
    Inscrit en
    Septembre 2005
    Messages
    4 954
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : DPO
    Secteur : Distribution

    Informations forums :
    Inscription : Septembre 2005
    Messages : 4 954
    Points : 8 486
    Points
    8 486
    Par défaut
    Je n'ai jamais utilisé la première méthode.

    Mais si je devais vraiment en arriver à cet extrémité, je pense que je la gèrerais comme la deuxième.

    Éventuellement, je renverrais les user loggé mais qui n'ont pas les droits vers une page de mon cru qui vérifierait que la personne à le droit d'accéder au module (et donc que le rejet viens d'une interdiction d'accéder au module en général) ou simplement n'a pas le droit à une fonction du module. Dans le premier cas, logout et retour à la page de loggin, dans l'autre, affichage d'un message d'erreur.

    On est bien d'accord qu'ici le terme module représente, pour symfony, une application.

  11. #11
    Membre régulier
    Profil pro
    Inscrit en
    Février 2010
    Messages
    267
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 267
    Points : 101
    Points
    101
    Par défaut
    on est bien d'accord pour le terme module,
    je vais continuer à réfléchir et à me documenter sur ce problème avant de me lancer car ça me semble extrêmement complexe.

  12. #12
    Membre régulier
    Profil pro
    Inscrit en
    Février 2010
    Messages
    267
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 267
    Points : 101
    Points
    101
    Par défaut
    je vais mettre en place ta solution, est il possible d'ajouter des règles de routage a chaque utilisateur ? par exemple le comptable ce connecte sur l'index au lieu de passer par un menu pour accéder au module compta il est directement router sur le module.

  13. #13
    Expert éminent
    Avatar de Michel Rotta
    Homme Profil pro
    DPO
    Inscrit en
    Septembre 2005
    Messages
    4 954
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : DPO
    Secteur : Distribution

    Informations forums :
    Inscription : Septembre 2005
    Messages : 4 954
    Points : 8 486
    Points
    8 486
    Par défaut
    Avec la fonction hasCredential() tu peux rerouter comme tu veux ton user vers le menu que tu souhaites.

    Mais pense a deux choses :
    • Comment rerouter un utilisateur qui a accès à deux modules ?
    • Tu vas bien devoir mettre un menu général qui permettra à un comptable / marketing de changer de menu.


    En fait je ne m'embêterais pas avec ça, tu le fais arriver sur le menu général, et hop, il choisi le module.

    La où tu peux ruser, c'est dans ton menu général, n'afficher que les options pour lesquels l'utilisateur à des droits. Un gugus qui ne peut se connecter qu'à la compta ne verra en choix que la compta, un qui a accès à tous, verra tous.

  14. #14
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Mars 2011
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2011
    Messages : 4
    Points : 7
    Points
    7
    Par défaut
    Salut,

    Bon j'interviens un peu tard mais je pense avoir la réponse exacte, l'ayant chercher moi même dernièrement je suis tombé sur ce post et j'ai trouvé la solution:

    Pour pouvoir mettre des droits spécifiques sur les modules d'une application,
    il faut créer un dossier config dans chacun des modules avec un fichier security.yml

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    apps/
      app_1/
        modules/
          module_1/
            actions/
            templates/
            config/
              security.yml
          module_2/
            actions/
            templates/
            config/
              security.yml

    Voili

Discussions similaires

  1. Gestion des droits sur les annuaires de contacts.
    Par fancio dans le forum Configuration
    Réponses: 3
    Dernier message: 11/07/2011, 10h18
  2. [SSRS] [2K5] Gestion des droits sur les rapports
    Par frangin2003 dans le forum SSRS
    Réponses: 0
    Dernier message: 18/09/2009, 16h40
  3. [2K5] gestion des droits sur les rapports
    Par aqavach dans le forum SSRS
    Réponses: 3
    Dernier message: 15/08/2009, 00h02
  4. [c#] gestion des droits sur les fichiers
    Par mrrenard dans le forum Windows Forms
    Réponses: 1
    Dernier message: 29/11/2006, 11h50
  5. Réponses: 1
    Dernier message: 16/10/2006, 18h07

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