/** * Redirects to defined action by new users. * * Note: appendExceedingArguments is requered in your routes. * * @return void */ protected function makeRedirectByDetectingNewUser() { $providerName = $this->request->getInternalArgument('__casAuthenticationProviderName'); if (empty($providerName)) { throw new \TYPO3\Flow\Security\Exception('New user detected but can not provide redirect to defined action, because requered argument "__casAuthenticationProviderName" is not set.', 1375272628); } if (!$this->casManager->isCasProvider($providerName)) { throw new \RafaelKa\JasigPhpCas\Exception\InvalidArgumentException(sprintf('New user detected but can not provide redirect to defined action, because "%s" provider is not of type "%s".', $providerName, \RafaelKa\JasigPhpCas\Service\CasManager::DEFAULT_CAS_PROVIDER), 1375273096); } $redirectByNewUser = $this->configurationManager->getConfiguration(\TYPO3\Flow\Configuration\ConfigurationManager::CONFIGURATION_TYPE_SETTINGS, 'TYPO3.Flow.security.authentication.providers.' . $providerName . '.providerOptions.Mapping.redirectByNewUser'); if (empty($redirectByNewUser['@action'])) { throw new \RafaelKa\JasigPhpCas\Exception\InvalidArgumentException(sprintf('')); } if (empty($redirectByNewUser['@controller'])) { $controllerName = null; } else { $controllerName = $redirectByNewUser['@controller']; } if (empty($redirectByNewUser['@package'])) { $packageKey = null; } elseif (!empty($redirectByNewUser['@subpackage'])) { $packageKey = $redirectByNewUser['@package'] . '\\' . $redirectByNewUser['@subpackage']; } else { $packageKey = $redirectByNewUser['@package']; } if (empty($redirectByNewUser['@arguments'])) { $arguments = ['providerName' => $providerName]; } else { $arguments = ArraysUtility::arrayMergeRecursiveOverrule(['providerName' => $providerName], $redirectByNewUser['@arguments']); } if (empty($redirectByNewUser['@delay'])) { $delay = null; } else { $delay = $redirectByNewUser['@delay']; } if (empty($redirectByNewUser['@statusCode'])) { $statusCode = 303; } else { $statusCode = $redirectByNewUser['@statusCode']; } if (empty($redirectByNewUser['@format'])) { $format = null; } else { $format = $redirectByNewUser['@format']; } $this->redirect($redirectByNewUser['@action'], $controllerName, $packageKey, $arguments, $delay, $statusCode, $format); }
/** * Builds an array with settings for all CAS providers. * * @todo build settings only for providers, which configured for default mapper * * @return void */ public function buildSettings() { $globalProviders = $this->configurationManager->getConfiguration(ConfigurationManager::CONFIGURATION_TYPE_SETTINGS, 'TYPO3.Flow.security.authentication.providers'); foreach ($globalProviders as $providerName => $providerSettings) { if ($this->casManager->isCasProvider($providerName) && $this->isDefaultMapperChoosed($providerName)) { $this->settings[$providerName] = $providerSettings['providerOptions']['Mapping']; } } }