Symfony how to return all logged in Active Users

前端 未结 5 2043
-上瘾入骨i
-上瘾入骨i 2020-12-05 01:31

I want to return all Logged in users of my application and render it in my Dashboard. The user_id and user_name should be retrieve

5条回答
  •  清歌不尽
    2020-12-05 01:43

    Update for Symfony 3.4

    1. Add this to your User Entity

    Same as Step 1 Above

    2. Create Event Listener

    tokenContext= $tokenContext;
            $this->doctrine= $doctrine;
        }
    
        /**
        * Update the user "lastActivity" on each request
        * @param FilterControllerEvent $event
        */
        public function onCoreController(FilterControllerEvent $event)
        {
            // Check that the current request is a "MASTER_REQUEST"
            // Ignore any sub-request
            if ($event->getRequestType() !== HttpKernel::MASTER_REQUEST) {
                return;
            }
    
            // Check token authentication availability
            if ($this->tokenContext->getToken()) {
                $user = $this->tokenContext->getToken()->getUser();
    
                if ( ($user instanceof User) && !($user->isActiveNow()) ) {
                    $user->setLastActivityAt(new \DateTime());
                    $this->doctrine->getManager()->flush($user);
                }
            }
        }
    }
    

    3. Declare event Listener as a service

    parameters:
        acme_user.activity_listener.class: Acme\UserBundle\EventListener\ActivityListener
    
    services:
        acme_user.activity_listener:
            class: %acme_user.activity_listener.class%
            arguments: ['@security.token_storage', '@doctrine']
            tags:
                - { name: kernel.event_listener, event: kernel.controller, method: onCoreController }
    

提交回复
热议问题