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

Bibliothèques et frameworks PHP Discussion :

[Symfony 4] LDAPUser et FOSUser


Sujet :

Bibliothèques et frameworks PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2017
    Messages
    87
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2017
    Messages : 87
    Par défaut [Symfony 4] LDAPUser et FOSUser
    Bonjour,

    Je travaille sur un site web sur lequel il y a deux types d'utilisateurs possibles. Premièrement, les LDAP, qui sont des LdapUser, et les locaux qui sont des FOSUser. Mon problème est que lorsqu'un utilisateur souhaite accèder à son profil, cela rentre dans le ProfileController du bundle FOS. Sauf que dedans il y a une vérification du type de user, et il faut que ce user soit de type FOSUser donc les LDAPUsers ont un problème d'accès. J'ai donc essayé de surcharger la méthode d'accès du ProfileController, j'ai créé un nouveau ProfileController qui accepte les deux types d'utilisateurs. DOnc ça a bien marché mais je n'avais pas pensé aux méthodes.

    C'est à dire: FOSUser a plusieurs méthodes que LDAPUser n'implémente pas donc j'ai des erreurs à ce niveau. Que puis-je faire? J'ai essayé de surcharger LdapUser et LdapUserProvider en le passant en tant que service mais je n'ai rien réussi à faire

    SI quelqu'un a une idée, merci d'avance!

    PS: j'ai écumé le net pendant 2 jours en essayant diverses techniques mais je n'ai eu aucun résultat donc je vous demande de l'aide

  2. #2
    Membre confirmé
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2017
    Messages
    87
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2017
    Messages : 87
    Par défaut
    Personne n'a d'idées? J'ai créé LdapUser et LdapUserProvider et j'ai mis ce code dans service.yaml:
    Code yaml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    App\Security\LdapUserProvider:
        arguments:
            - $ldap: '@Symfony\Component\Ldap\Ldap'
            - $baseDn: 'OU=xxx,DC=xxx,DC=xx'
            - $searchDn: 'xxx@xxx'
            - $searchPassword: 'xxx'
            - $defaultRoles:
               'ROLE_USER'
            - $uidKey: 'xxx'
            - $filter: '{uid_key}={username}'
    Symfony\Component\Ldap\Ldap:
        arguments: ['@Symfony\Component\Ldap\Adapter\ExtLdap\Adapter']
    Symfony\Component\Ldap\Adapter\ExtLdap\Adapter:
        arguments:
            - host: "xxx"
              port: xxx
              encryption: none
              options:
                protocol_version: 3
                referrals: false

    Et dans security.yaml

    Code yaml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    security:
        providers:
            fos_userbundle:
                id: fos_user.user_provider.username
            intranet_ldap:
                id: App\Security\LdapUserProvider
     
        firewalls:
            main:
                pattern:            ^/
                context:            user
                anonymous:          true
                form_login_ldap:
                    service:        Symfony\Component\Ldap\Ldap
                    provider:       intranet_ldap
                    login_path:     /login
                    check_path:     /login_check
                    dn_string:      'DC=xxx, DC=xxx'
                    query_string:   '(&(xxx={username}))'



    Mais j'ai cette erreur

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Argument 1 passed to App\Security\LdapUserProvider::__construct() must be an instance of Symfony\Component\Ldap\Ldap, array given, called in /var/www/intranet/var/cache/dev/ContainerWx1vIYS/getLdapUserProviderService.php on line 13
    La ligne où il y a l'erreur est mon constructeur de LdapUserProvider:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    public function __construct(Ldap $ldap, string $baseDn, string $searchDn = null, string $searchPassword = null, array $defaultRoles = [], string $uidKey = null, string $filter = null, string $passwordAttribute = null, array $extraFields = [])
     {
         var_dump("hello");
         if (null === $uidKey) {
             $uidKey = 'sAMAccountName';
         }
     
         if (null === $filter) {
             $filter = '({uid_key}={username})';
         }
     
         $this->ldap = $ldap;
         $this->baseDn = $baseDn;
         $this->searchDn = $searchDn;
         $this->searchPassword = $searchPassword;
         $this->defaultRoles = $defaultRoles;
         $this->uidKey = $uidKey;
         $this->defaultSearch = str_replace('{uid_key}', $uidKey, $filter);
         $this->passwordAttribute = $passwordAttribute;
         $this->extraFields = $extraFields;
     }
    Merci d'avance pour votre aide!

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 03/04/2016, 01h02
  2. [1.x] symfony - Plusieurs projets
    Par mrjulien dans le forum Symfony
    Réponses: 3
    Dernier message: 12/09/2009, 21h46
  3. [1.x] Tutoriel pour symfony
    Par cjoly dans le forum Symfony
    Réponses: 7
    Dernier message: 19/07/2007, 19h03
  4. [1.x] Problème installation symfony
    Par Nout dans le forum Symfony
    Réponses: 3
    Dernier message: 27/05/2007, 22h26

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