How to get the current logged User in a service How to get the current logged User in a service symfony symfony

How to get the current logged User in a service


Inject security.token_storage service into your service, and then use:

$this->token_storage->getToken()->getUser();

as described here: http://symfony.com/doc/current/book/security.html#retrieving-the-user-object and here: http://symfony.com/doc/current/book/service_container.html#referencing-injecting-services


Works with Symfony 3.4, 4.x, 5.x & above. The Security utility class was introduced in Symfony 3.4.

use Symfony\Component\Security\Core\Security;public function indexAction(Security $security){    $user = $security->getUser();}

https://symfony.com/doc/3.4/security.html#always-check-if-the-user-is-logged-in


Using constructor dependency injection, you can do it this way:

use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface;class A{    private $user;    public function __construct(TokenStorageInterface $tokenStorage)    {        $this->user = $tokenStorage->getToken()->getUser();    }    public function foo()    {        dump($this->user);    }}