You can use example below to get details of authenticated or logged in user's details.


Example


This is just a test so instead of a controller, you can use an event listener as well.


namespace Application\ServerBundle\Controller;

use Application\ServerBundle\Entity\User;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Method;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface;
use Symfony\Component\Security\Core\Exception\AccessDeniedException;

/**
* @Route("api", service="application_server.controller.api")
*/
class ApiController extends Controller
{
private $tokenStorage;

public function __construct(
TokenStorageInterface $tokenStorage
) {
$this->tokenStorage = $tokenStorage;
}

/**
* @param Request $request
*
* @Method({"POST"})
* @Route("")
*
* @return Response
*/
public function indexAction(Request $request)
{
$user = $this->tokenStorage->getToken()->getUser();
if (!$user instanceof User) {
throw new AccessDeniedException();
}

$user->getId();
$user->getUsername();
$user->getEmail();
$user->getRoles();
$user->getPassword();
$user->getRoles();
// And setters ...

.....

return new Response(.....);
}
}

services:
application_server.controller.api:
class: Application\ServerBundle\Controller\ApiController
arguments:
- @security.token_storage