hasAspect('security')) { $securityAspect = $context->getAspect('security'); } if (!isset($securityAspect) || !$securityAspect instanceof SecurityAspect) { $securityAspect = GeneralUtility::makeInstance(SecurityAspect::class); $context->setAspect('security', $securityAspect); } return $securityAspect; } public function __construct() { $this->noncePool = GeneralUtility::makeInstance(NoncePool::class); $this->signingSecretResolver = GeneralUtility::makeInstance( SigningSecretResolver::class, [ 'nonce' => $this->noncePool, // @todo enrich in separate step with `*FormProtection` ] ); } public function get(string $name): bool|Nonce|RequestToken|null { return match ($name) { 'receivedRequestToken' => $this->receivedRequestToken, 'signingSecretResolver' => $this->signingSecretResolver, 'noncePool' => $this->noncePool, default => null, }; } public function getReceivedRequestToken(): RequestToken|false|null { return $this->receivedRequestToken; } public function setReceivedRequestToken(RequestToken|false|null $receivedRequestToken): void { $this->receivedRequestToken = $receivedRequestToken; } /** * Resolves corresponding signing secret providers (such as `NoncePool`). * Example: `...->getSigningSecretResolver->findByType('nonce')` resolves `NoncePool` */ public function getSigningSecretResolver(): SigningSecretResolver { return $this->signingSecretResolver; } public function getNoncePool(): NoncePool { return $this->noncePool; } /** * Shortcut function to `NoncePool`, providing a `SigningSecret` * @todo this is a "comfort function", might be dropped */ public function provideNonce(): Nonce { return $this->noncePool->provideSigningSecret(); } }