/**
  * @param Token $token
  * @return void
  */
 public function createAction(Token $token = NULL)
 {
     if ($token === NULL) {
         $this->addFlashMessage('The activation link is not valid.', '', Message::SEVERITY_ERROR);
         $this->forward('createError');
     }
     $user = $token->getMeta()['user'];
     $result = $this->crowdClient->addUser($user->getFirstname(), $user->getLastname(), $user->getEmail(), $user->getUsername(), $user->getPassword());
     if (!$result->hasErrors()) {
         $this->addFlashMessage('Your account was created successfully. You can now sing in with your credentials.', 'Account created', Message::SEVERITY_OK);
         $this->redirect('index');
     } else {
         $error = $result->getFirstError();
         $this->addFlashMessage($error->getMessage(), $error->getTitle(), Message::SEVERITY_ERROR);
         $this->forward('createError');
     }
 }
 /**
  * @param Token $token
  * @return void
  */
 public function onetimeLoginAction(Token $token)
 {
     $username = $token->getMeta()['name'];
     /** @var $account \TYPO3\Flow\Security\Account */
     $account = NULL;
     $providerName = $this->authenticationProviderName;
     $accountRepository = $this->accountRepository;
     $this->securityContext->withoutAuthorizationChecks(function () use($username, $providerName, $accountRepository, &$account) {
         $account = $accountRepository->findActiveByAccountIdentifierAndAuthenticationProviderName($username, $providerName);
     });
     foreach ($this->securityContext->getAuthenticationTokens() as $authenticationToken) {
         if ($authenticationToken->getAuthenticationProviderName() === $providerName) {
             $authenticationToken->setAuthenticationStatus(TokenInterface::AUTHENTICATION_SUCCESSFUL);
             $authenticationToken->setAccount($account);
             break;
         }
     }
     $this->redirect('resetForm');
 }