Symfony как вернуть всех залогиненных активных пользователей
Я хочу вернуть всеЗарегистрированные пользователи моего приложения и отобразить его в моей панели инструментов.user_id
а такжеuser_name
должен быть извлечен из сеанса (я использую внешнюю библиотеку LDAP для аутентификации)
Я создал поле в базе данных под названиемlastActivity
который будет содержать время последнего входа в систему, а затем я могу запросить базу данных дляlastActivity
отображать пользователей, вошедших в систему за последние 2 минуты.
ActivityListener.php
securityContext = $securityContext;
$this->entityManager = $entityManager;
}
/**
* 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->securityContext->getToken()) {
$user = $this->securityContext->getToken()->getUser();
if ( ($user instanceof User) && !($user->isActiveNow()) ) {
$user->setLastActivity(new \DateTime('now'));
$this->entityManager->flush($user);
}
}
}
}
Services.yml
services:
activity_listener:
class: Bnpp\SecurityBundle\EventListener\ActivityListener
arguments: [@security.context, @doctrine.orm.entity_manager]
tags:
- { name: kernel.event_listener, event: kernel.controller, method: onCoreController }
Пользовательский объект
getlastActivity()>$delay);
}
/**
* Set lastActivity
*
* @param\Datetime $lastActivity
* @return User
*/
public function setlastActivity($lastActivity)
{
$this->lastActivity = $lastActivity;
return $this;
}
/**
* Get lastActivity
*
* @return \DateTime
*/
public function getlastActivity()
{
return $this->lastActivity;
}
}