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 :

[FOSUserBundle] Quel listener pour l'authentification ? [2.x]


Sujet :

Symfony PHP

  1. #1
    Membre régulier Avatar de DarckCrystale
    Femme Profil pro
    Développeuse Web
    Inscrit en
    Juin 2013
    Messages
    71
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 32
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeuse Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2013
    Messages : 71
    Points : 109
    Points
    109
    Par défaut [FOSUserBundle] Quel listener pour l'authentification ?
    Bonjour à tous !

    Je cherche à effectuer une action au moment de la connexion d'un utilisateur, c'est à dire incrémenter un champ que j'ai rajouté dans l'entité User et qui s'appelle nbConnexions. Ce champ va simplement servir à compter le nombre de fois qu'un utilisateur se connectera au site.

    Sauf que je ne trouve pas le listener (s'il y en a un) qui est utilisé lors de l'authentification via le formulaire de connexion (c'est celui de FOSUB d'origine).

    Auriez-vous des pistes ?

    Merci de vos réponses !

  2. #2
    Membre expert
    Avatar de dukoid
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2012
    Messages
    2 100
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2012
    Messages : 2 100
    Points : 3 004
    Points
    3 004
    Par défaut
    te suffit d'utiliser LoginSuccessHandler

    des explications ici par exemple : http://www.reecefowell.com/2011/10/2...loginhandlers/

  3. #3
    Membre régulier Avatar de DarckCrystale
    Femme Profil pro
    Développeuse Web
    Inscrit en
    Juin 2013
    Messages
    71
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 32
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeuse Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2013
    Messages : 71
    Points : 109
    Points
    109
    Par défaut
    Merci dikoid pour cette réponse !

    Je donne mon code, parce que j'ai un peu bidouillé par rapport au lien donnée :

    Mon app/config/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
    15
    16
    17
    security:
        #...
        providers:
            main:
                id: fos_user.user_provider.username_email
        firewalls:
            main:
                pattern:        ^/
                anonymous:      true
                provider:       main
                form_login:
                    login_path: fos_user_security_login
                    check_path: fos_user_security_check
                    success_handler: acme_user.services.login_success_handler
                remember_me:
                    # %secret% est un paramètre de parameters.yml
                    key:        %secret%
    Mon src/Acme/UserBundle/Resources/config/services.yml
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    services:    
        acme_user.services.login_success_handler:
            class:        Acme\UserBundle\Services\LoginSuccessHandler
            arguments:    [@router, @security.context, @service_container]
    Mon src/Acme/UseBundle/Services/LoginSuccessHandler
    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
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    <?php
     
    namespace Acme\UserBundle\Services;
     
    use Symfony\Component\Security\Http\Authentication\AuthenticationSuccessHandlerInterface;
    use Symfony\Component\Security\Core\Authentication\Token\TokenInterface;
    use Symfony\Component\Security\Core\SecurityContext;
    use Symfony\Component\HttpFoundation\Request;
    use Symfony\Component\HttpFoundation\RedirectResponse;
    use Symfony\Component\Routing\Router;
    use Acme\UserBundle\Entity\User;
    use Symfony\Component\DependencyInjection\ContainerInterface;
     
    class LoginSuccessHandler implements AuthenticationSuccessHandlerInterface {
     
        protected $router;
        protected $security;
        protected $container;
     
        public function __construct(Router $router, SecurityContext $security, ContainerInterface $container) {
            $this->router = $router;
            $this->security = $security;
            $this->container = $container;
        }
     
        public function onAuthenticationSuccess(Request $request, TokenInterface $token) {
            $user = $token->getUser();
            $user->increment();
            // On récupère le manager
            $em = $this->container->get('doctrine')->getManager();
            $em->persist($user);
            $em->flush();
     
            return $response = new RedirectResponse("/");
        }
     
        public function getContainer() {
            return $this->container;
        }
     
    }
    Et ça marche !

    Merci encore :3

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

Discussions similaires

  1. Quel framework pour une authentification et gestion des sessions
    Par Kilik75 dans le forum Frameworks Web
    Réponses: 0
    Dernier message: 01/04/2015, 03h49
  2. Réponses: 7
    Dernier message: 23/03/2006, 13h13
  3. Quel listener pour l'édition d'une JTable?
    Par ®om dans le forum Composants
    Réponses: 4
    Dernier message: 11/05/2005, 21h13
  4. Quel Outil pour les applis Industrielles ET bases de données
    Par ThierryAIM dans le forum Débats sur le développement - Le Best Of
    Réponses: 8
    Dernier message: 23/04/2003, 09h14
  5. Quel outil pour du développement Client/Serveur (Win XP) ?
    Par jey_bonnet dans le forum Débats sur le développement - Le Best Of
    Réponses: 5
    Dernier message: 02/11/2002, 14h57

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