/** * For the given $token an activation link is returned. * * @param Token $token * @return string * @throws InvalidTokenException */ public function getActivationLink(Token $token) { $activationConfiguration = $token->getPreset()['activation']; $tokenHash = $token->getHash(); if ($activationConfiguration['uri'] === NULL) { throw new \RuntimeException('Building activation link failed, no uri configuration is set', 1434728943); } elseif (is_array($activationConfiguration['uri'])) { $routerConfiguration = $activationConfiguration['uri']; $this->uriBuilder->setRequest($this->request); $uri = $this->uriBuilder->setCreateAbsoluteUri(TRUE)->setFormat($routerConfiguration['@format'])->uriFor($routerConfiguration['@action'], $routerConfiguration['arguments'], $routerConfiguration['@controller'], $routerConfiguration['@package'], $routerConfiguration['@subpackage']); } elseif (is_string($activationConfiguration['uri'])) { $uri = $activationConfiguration['uri']; } else { throw new \RuntimeException('Building activation link failed, uri configuration is invalid (neither array nor string)', 1434732898); } $this->logger->log(sprintf('Activation link built for token with hash %s', $tokenHash, $token->getIdentifier()), LOG_INFO); return str_replace('-tokenhash-', $tokenHash, $uri); }