/** * Logs calls * * @Flow\After("method(PerfectIn\Api\Webservice\WebserviceCall->invoke())") * @param \TYPO3\Flow\Aop\JoinPointInterface $joinPoint The current joinpoint */ public function logFinishServiceCall(\TYPO3\Flow\Aop\JoinPointInterface $joinPoint) { $callIdentifier = $joinPoint->getProxy()->getClass() . '::' . $joinPoint->getProxy()->getMethod(); if ($joinPoint->hasException()) { $this->logger->log($this->logIdentifier . ' - error - ' . $joinPoint->getException()->getMessage() . '(' . $joinPoint->getException()->getCode() . ')', LOG_ERR); } else { $this->logger->log($this->logIdentifier . ' - response - ' . $this->getLogMessageForVariable($joinPoint->getResult()), LOG_INFO); } }
/** * Logs calls and results of the authenticate() method of the Authentication Manager * * @Flow\After("within(TYPO3\Flow\Security\Authentication\AuthenticationManagerInterface) && method(.*->authenticate())") * @param \TYPO3\Flow\Aop\JoinPointInterface $joinPoint The current joinpoint * @return mixed The result of the target method if it has not been intercepted * @throws \Exception */ public function logManagerAuthenticate(\TYPO3\Flow\Aop\JoinPointInterface $joinPoint) { if ($joinPoint->hasException()) { $exception = $joinPoint->getException(); if (!$exception instanceof NoTokensAuthenticatedException) { $this->securityLogger->log('Authentication failed: "' . $exception->getMessage() . '" #' . $exception->getCode(), LOG_NOTICE); } throw $exception; } elseif ($this->alreadyLoggedAuthenticateCall === FALSE) { if ($joinPoint->getProxy()->getSecurityContext()->getAccount() !== NULL) { $this->securityLogger->log('Successfully re-authenticated tokens for account "' . $joinPoint->getProxy()->getSecurityContext()->getAccount()->getAccountIdentifier() . '"', LOG_INFO); } else { $this->securityLogger->log('No account authenticated', LOG_INFO); } $this->alreadyLoggedAuthenticateCall = TRUE; } }
/** * Logs calls and results of the authenticate() method of the Authentication Manager * * @Flow\After("within(TYPO3\Flow\Security\Authentication\AuthenticationManagerInterface) && method(.*->authenticate())") * @param JoinPointInterface $joinPoint The current joinpoint * @return mixed The result of the target method if it has not been intercepted * @throws \Exception */ public function logManagerAuthenticate(JoinPointInterface $joinPoint) { if ($joinPoint->hasException()) { $exception = $joinPoint->getException(); if (!$exception instanceof NoTokensAuthenticatedException) { $this->securityLogger->log(sprintf('Authentication failed: "%s" #%d', $exception->getMessage(), $exception->getCode()), LOG_NOTICE); } throw $exception; } elseif ($this->alreadyLoggedAuthenticateCall === false) { /** @var AuthenticationManagerInterface $authenticationManager */ $authenticationManager = $joinPoint->getProxy(); if ($authenticationManager->getSecurityContext()->getAccount() !== null) { $this->securityLogger->log(sprintf('Successfully re-authenticated tokens for account "%s"', $authenticationManager->getSecurityContext()->getAccount()->getAccountIdentifier()), LOG_INFO); } else { $this->securityLogger->log('No account authenticated', LOG_INFO); } $this->alreadyLoggedAuthenticateCall = true; } }