/**
  * Logs calls and results of the logout() method of the Authentication Manager
  *
  * @afterreturning within(F3\FLOW3\Security\Authentication\AuthenticationManagerInterface) && method(.*->logout())
  * @param \F3\FLOW3\AOP\JoinPointInterface $joinPoint The current joinpoint
  * @return mixed The result of the target method if it has not been intercepted
  * @author Robert Lemke <*****@*****.**>
  */
 public function logManagerLogout(\F3\FLOW3\AOP\JoinPointInterface $joinPoint)
 {
     $accountIdentifiers = array();
     foreach ($joinPoint->getProxy()->getSecurityContext()->getAuthenticationTokens() as $token) {
         $account = $token->getAccount();
         if ($account !== NULL) {
             $accountIdentifiers[] = $account->getAccountIdentifier();
         }
     }
     $this->systemLogger->log('Logged out ' . count($accountIdentifiers) . ' account(s). (' . implode(', ', $accountIdentifiers) . ')', LOG_INFO);
 }
 /**
  * Mark object as cloned after cloning.
  *
  * Note: this is done even if an object explicitly implements the
  * DirtyMonitoringInterface to make sure it is proxied by the AOP
  * framework (we need that to happen)
  *
  * @param \F3\FLOW3\AOP\JoinPointInterface $joinPoint
  * @return void
  * @afterreturning method(.*->__clone())
  * @author Robert Lemke <*****@*****.**>
  */
 public function cloneObject(\F3\FLOW3\AOP\JoinPointInterface $joinPoint)
 {
     $proxy = $joinPoint->getProxy();
     $proxy->FLOW3_Persistence_clone = TRUE;
 }