sensiolabs/SensioFrameworkExtraBundle — pull request #327 by adamquaile (2014-09-20 19:20:19+00:00)
Title: ParamConverter to inject the current user

When creating testable controllers, it's often desirable to not use the `getUser` function in the base controller, as this relies on the whole service container.

In this case, we might add a dependency on the `SecurityContext` to achieve the same result, replicating this code:

public function getUser()
{
if (!$this->container->has('security.context')) {
throw new \LogicException('The SecurityBundle is not registered in your application.');
}

if (null === $token = $this->container->get('security.context')->getToken()) {
return;
}

if (!is_object($user = $token->getUser())) {
return;
}

return $user;
}

This parameter converter streamlines the process and injects the current user into the controller method instead using the following format:

/**
* @ParamConverter(converter="current_user", name="parameterName")
*/
public function viewInboxAction(User $currentUser)