/** * @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'); }