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 :

Verifier le propriétaire/personnes autorisée pour une ressource


Sujet :

Symfony PHP

  1. #1
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2011
    Messages
    104
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2011
    Messages : 104
    Par défaut Verifier le propriétaire/personnes autorisée pour une ressource
    Bonjour a tous,
    Je cherche a implementer le problème suivant:
    Un utilisateur doit se connecter pour accéder a une partie du site
    Un utilisateur john crée un profil, il y accede ensuite a l'addresse suivante:

    www.monsite.com/john ou john est la valeur du slug
    Pour acceder a cette ressource il doit s'identifier donc l'accès est en partie restreint. Cependant rien n'empêche Eric qui a un compte sur le site de taper la valeur john dans la barre d'adresse et ainsi consulter/modifier le profil de john a son insu.

    Dans un ancien post j'ai lu que Michel Rotta avait préconisé d'utiliser les method dans le fichier routing.yml
    Seulement j'aimerai aussi que john puisse par exemple autoriser eric a faire un Get sur l'adresse www.monsite.com/john mais lui interdire un Put,Delete,....
    Et si John veut donner un acces temporaire seulement a Eric (2jours, 1h)?
    Si on ajoute aussi le fait que john puisse avoir des ressources sous forme d'articles: www.monsite.com/john/mon-article , comment peut il gérer qui a le droit d'acceder a tel ou tel article?

    J'ai regardé du coté de OAUTH et des plugins associés mais on y explique seulement comment autoriser la tierce personne a recevoir le token, je n'ai pas compris comment faire pour associer un objet avec son proprietaire et les personnes autorisé pour certaines actions avec cet objet.

    Si vous avez des idées de comment implémenter cela, si vous connaissez un plugin, ou meme tuto qui traine car la je cherche depuis une semaine sans succès...

    Merci

  2. #2
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2011
    Messages
    104
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2011
    Messages : 104
    Par défaut
    Il y a vraiment personne qui a déjà implémenté un truc similaire??

  3. #3
    Membre actif
    Homme Profil pro
    Développeur multimédia
    Inscrit en
    Février 2010
    Messages
    55
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur multimédia

    Informations forums :
    Inscription : Février 2010
    Messages : 55
    Par défaut
    Salut,

    D'après ce que j'ai lu, je passerais par des groupes, je m'explique. Quand tu créer un utilisateur, tu lui créer un groupe en même temps, Ensuite il ne reste plus que à ajouter les personnes qui peuvent modifier certaines pages dans ce groupe.

    CREATE:
    USER => Jhon, GROUP => jhon
    USER => Paul, GROUP => paul

    Là seul Jhon peut voir sa page car personne d'autre n'appartient à son groupe. Pour que Paul puisse voir sa page il suffit de lui ajouter le group jhon.

    ADD GROUP:
    USER => Paul, GROUP => paul, jhon

  4. #4
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2011
    Messages
    104
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2011
    Messages : 104
    Par défaut
    Salut et merci pour ta réponse,
    Donc si on prend un exemple avec une table User, une table Group et une table Article on aurait les relations suivantes:

    un élément de User est associé à un élément de Group dans lequel il est en gros "super admin". Chaque élément de User peut être associé à d'autres Groups avec un credential donné par le "super admin" (propriétaire) du groupe.

    Et chaque objet de la table Article est associé à un ou plusieurs Groups avec un certain credential pour y accéder.

    On a donc pour chaque action sur la bdd:
    -récupération du groupe et du credential nécessaire pour accéder à l'objet
    -On regarde si la personne voulant acceder à l'action est bien dans le groupe avec le bon credential, et on autorise ou pas.

    C'est bien ça auxquel tu pensais car ça me parait lourd à faire tourner surtout que la table Group sera en relation ManyToMany avec chaque table de la bdd?
    Je me demande quel est le principe utilisé par twitter ou facebook, sachant que pour ce dernier quand tu as des millions d'inscrits avec chacun des centaines d'amis et que tu peux mettre des permissions différentes pour tous il faut que le truc soit bien conçu.

    Si tu as des liens des sites où tu as vu des infos là dessus?

    En tout cas merci ça me donne une piste.

  5. #5
    Membre actif
    Homme Profil pro
    Développeur multimédia
    Inscrit en
    Février 2010
    Messages
    55
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur multimédia

    Informations forums :
    Inscription : Février 2010
    Messages : 55
    Par défaut
    Salut,

    Pour moi tu vas trop loin dans la réflexion ...

    J'utiliserais le plugin sfdoctrineguardplugin qui créer et gère plusieurs tables, et ces principales fonctionnalités sont:
    • gestion des utilisateurs
    • gestions des groupes
    • gestions des permissions


    Mettons que /john est la route qui renvoie au module XXX, ce module par défaut je le mettrais en "secure: true" comme sa tu es sur que l'utilisateur doit être logué pour voir cette page.

    Une fois que l'utilisateur TOTO est logué il peut voir cette page mais a-t-il le droit de modifier ou supprimer certains élément, dans ce cas là, je récupère le paramètre GET de l'URL :jhon, ensuite je vérifie si TOTO fait partie du groupe JHON.
    Si oui alors dans le template j'affiche un partial menu avec les possibilité autorisé.
    Si non pas de partial.

    Lors de la création d'un utilisateur JHON, je créé aussi un groupe JHON. donc par défaut l'utilisateur créé pourra faire CRUD sur son profil. Si l'utilisateur veut que TOTO puisse faire un CRUD sur son profil il n'aura plus que à ajouté TOTO dans son groupe. Pour ce faire, une vérification sur IF(USERNAME == GROUPNAME) alors c'est l'administrateur du groupe, donc partial plus menu avec ajouter ou supprimer memebre du groupe.

    Regarde le plugin sfdoctrineguardplugin il y a un paquets d'exemple comme le tient et beaucoup plus propre que mon exemple.

  6. #6
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2011
    Messages
    104
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2011
    Messages : 104
    Par défaut
    J'utilise déjà sfDoctrineGuardPlugin mais je m'en servais seulement pour de l'authentification un Username et Password. Je ne l'avais jamais utilisé pour les permissions et groupes (je n'avais aucune idée sur la bonne manière de m'en servir)

    En tout cas maintenant que j'ai une idée de comment ça marche je vais pouvoir trouve les bons exemples.

    Merci

Discussions similaires

  1. [WD18] Ajouter un rdv pour une ressource Planning
    Par vegetacherif dans le forum WinDev
    Réponses: 2
    Dernier message: 27/12/2014, 22h26
  2. [2.x] [Routing] Avoir un préfixe variable pour une ressource externe
    Par creativecwx dans le forum Symfony
    Réponses: 13
    Dernier message: 10/05/2011, 12h23
  3. Utilisation ressources pour une appdata?
    Par Phelix2003 dans le forum MATLAB
    Réponses: 1
    Dernier message: 16/10/2007, 11h56
  4. créer une liste de valeurs autorisées pour un champ
    Par elitol dans le forum MS SQL Server
    Réponses: 9
    Dernier message: 01/06/2006, 17h37
  5. Création de groupes locaux pour sécuriser une ressource
    Par elagarde dans le forum Windows Serveur
    Réponses: 1
    Dernier message: 30/09/2005, 09h15

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