/**
* Tries to retrieve the user from current token.
* If the token does not exist, AnonymousUser is returned.
*
* @throws FirewallException
* @return bool|\Webiny\Component\Security\User\AbstractUser
*/
public function getUser()
{
if ($this->userAuthenticated) {
return $this->user;
}
try {
// get token
$this->user = new AnonymousUser();
$tokenData = $this->getToken()->getUserFromToken();
if (!$tokenData) {
$this->eventManager()->fire(SecurityEvent::NOT_AUTHENTICATED, new SecurityEvent($this->user));
$this->userAuthenticated = false;
return $this->user;
} else {
$this->user->populate($tokenData->getUsername(), '', $tokenData->getRoles(), true);
$this->user->setAuthProviderName($tokenData->getAuthProviderName());
$this->user->setUserProviderName($tokenData->getUserProviderName());
$this->eventManager()->fire(SecurityEvent::AUTHENTICATED, new SecurityEvent($this->user));
$this->setUserRoles();
$this->userAuthenticated = true;
return $this->user;
}
} catch (\Exception $e) {
$this->userAuthenticated = true;
throw new FirewallException($e->getMessage());
}
}