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 :

Symfony 5 : Récupérer les données de l'utilisateur connecté


Sujet :

Symfony PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Consultant fonctionnel
    Inscrit en
    Janvier 2021
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Consultant fonctionnel
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2021
    Messages : 10
    Par défaut Symfony 5 : Récupérer les données de l'utilisateur connecté
    Bonjour à tous,
    J'essai d'utiliser la méthode getUser() pour récupérer les données de l'utilisateur connecté mais sans succès

    doc :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    public function index()
    {
        // usually you'll want to make sure the user is authenticated first
        $this->denyAccessUnlessGranted('IS_AUTHENTICATED_FULLY');
     
        // returns your User object, or null if the user is not authenticated
        // use inline documentation to tell your editor your exact User class
        /** @var \App\Entity\User $user */
        $user = $this->getUser();
     
        // Call whatever methods you've added to your User class
        // For example, if you added a getFirstName() method, you can use that.
        return new Response('Well hi there '.$user->getFirstName());
    }
    Mon code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    public function onAuthenticationSuccess(Request $request, TokenInterface $token, string $providerKey)
        {
            if ($targetPath = $this->getTargetPath($request->getSession(), $providerKey)) {
                return new RedirectResponse($targetPath);
            }
            $this->denyAccessUnlessGranted('IS_AUTHENTICATED_FULLY');
            $user = $this->getUser();
    en ce qui concerne la ligne $this->denyAccessUnlessGranted('IS_AUTHENTICATED_FULLY'); j'ai une erreur
    "Undefined méthod denyAccessUnlessGranted"
    mais l'appel de cette méthode est il vraiment nécessaire ?
    Pour la ligne $user = $this->getUser(); j'ai un
    "Expected 2 arguments. Found 0"

  2. #2
    Membre chevronné
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2011
    Messages
    351
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2011
    Messages : 351
    Par défaut
    Salut,

    En fait la section de la doc à laquelle tu fais référence (https://symfony.com/doc/current/secu...he-user-object) indique comment récupérer l'utilisateur courant depuis un contrôleur en précisant que depuis un contrôleur, on peut accéder à des raccourcis :
    After authentication, the User object of the current user can be accessed via the getUser() shortcut
    Or visiblement tu n'es pas dans un contrôleur et 'est pourquoi tu as les erreurs qui indiquent que les raccourcis vers ces méthodes n'existent pas. Pour t'en sortir, il faut suivre la section suivante (https://symfony.com/doc/current/secu...from-a-service) qui explique comment injecter le service Security de Symfony dans ton service (c'est à dire dans ta classe qui contient la méthode onAuthenticationSuccess).

    Normalement en suivant la doc, tu devrais t'en sortir, sinon n'hésite pas à revenir ici !

  3. #3
    Membre averti
    Homme Profil pro
    Consultant fonctionnel
    Inscrit en
    Janvier 2021
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Consultant fonctionnel
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2021
    Messages : 10
    Par défaut
    Bonjour Thomas,
    premièrement merci pour ta réponse,
    Ta solution semble la bonne, en effet je n'ai plus le problème qui avait ouvert ce fil.
    Par contre j'en ai un autre et qui est cette erreur :

    "App\Controller\RegistrationController::register(): Return value must be of type Symfony\Component\HttpFoundation\Response, null returned"
    Nom : Capture d’écran 2021-01-25 à 14.53.42.png
Affichages : 10759
Taille : 181,3 Ko

    Je me demande si je ne devrais pas ne pas modifier UserAuthenticator.php, déterminer uniquement la redirection vers un controller comme l'indique la doc et dans ce controller procéder à ma redirection finale. Cela m'ajoute un controller qui ne fait pas grand chose, mais cela m'évite d'introduire des conflits dans le code existant.

  4. #4
    Membre chevronné
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2011
    Messages
    351
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2011
    Messages : 351
    Par défaut
    Citation Envoyé par LudovicKL Voir le message
    Je me demande si je ne devrais pas ne pas modifier UserAuthenticator.php, déterminer uniquement la redirection vers un controller comme l'indique la doc et dans ce controller procéder à ma redirection finale. Cela m'ajoute un controller qui ne fait pas grand chose, mais cela m'évite d'introduire des conflits dans le code existant.
    Qu'est-ce que tu essayes de faire concrètement ? (n'hésite pas à partager le code en totalité et en utilisant les balises [CODE])

  5. #5
    Membre averti
    Homme Profil pro
    Consultant fonctionnel
    Inscrit en
    Janvier 2021
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Consultant fonctionnel
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2021
    Messages : 10
    Par défaut
    En gros suivant l'utilisateur, donc suivant son ROLE, il doit avoir accès à certaines fonctionnalités.

    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
    public function onAuthenticationSuccess(Request $request, TokenInterface $token, string $providerKey)
        {
            if ($targetPath = $this->getTargetPath($request->getSession(), $providerKey)) {
                return new RedirectResponse($targetPath);
            }
            $user = $this->security->getUser();
     
            if ($user->getRoles() == "ROLE_WORKER") {
                return new RedirectResponse($this->urlGenerator->generate('worker'));
            }
            //throw new \Exception('TODO: provide a valid redirect inside ' . __FILE__);
     
            if ($user->getRoles() == "ROLE_AGENCY") {
                return new RedirectResponse($this->urlGenerator->generate('agency'));
            }
        }
    Donc j'ai essayé de le faire directement en modifiant la fonction onAuthenticationSucces(), je pense que c'est faisable, mais si je n'y arrive pas, je passerai par un controller intermédiaire comme expliqué précédemment.

  6. #6
    Membre chevronné
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2011
    Messages
    351
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2011
    Messages : 351
    Par défaut
    Qu'est-ce qui ne fonctionne pas comme tu voudrais dans le code actuel ?

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

Discussions similaires

  1. [MySQL] Afficher les données de l'utilisateur connecté
    Par FLAG30 dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 18/09/2020, 16h37
  2. Insérer les données d'un utilisateur connecté
    Par MInfo25 dans le forum Langage
    Réponses: 6
    Dernier message: 04/04/2018, 19h14
  3. Récupérer les infos d'un utilisateur connecté
    Par pitu69 dans le forum MkFramework
    Réponses: 15
    Dernier message: 20/05/2013, 19h41
  4. Réponses: 2
    Dernier message: 12/09/2011, 09h39
  5. [1.x] récupérer les données d'une jointure: symfony
    Par marwina32 dans le forum Symfony
    Réponses: 35
    Dernier message: 10/09/2010, 12h35

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