/**
  * switchBack
  *
  * @param User  $impersonatorUser
  * @param array $options
  *
  * @return Result
  * @throws \Exception
  */
 public function switchBack(User $impersonatorUser, $options = [])
 {
     // Get current user
     $currentUserId = $this->rcmUserService->getCurrentUser()->getId();
     $impersonatorUserId = $impersonatorUser->getId();
     $result = new Result();
     // Force login as $suUser
     $this->rcmUserService->getUserAuthService()->setIdentity($impersonatorUser);
     // log action
     $this->logAction($impersonatorUserId, $currentUserId, 'SU switched back', true);
     $result->setSuccess(true, 'SU switch back was successful');
     return $result;
 }
 /**
  * switchBack
  *
  * @param User  $impersonatorUser
  * @param array $options
  *
  * @return Result
  * @throws \Exception
  */
 public function switchBack(User $impersonatorUser, $options = [])
 {
     if (!isset($options['suUserPassword'])) {
         throw new \Exception('suUserPassword required for AuthSwitcher');
     }
     $suUserPassword = $options['suUserPassword'];
     // Get current user
     $currentUserId = $this->rcmUserService->getCurrentUser()->getId();
     $impersonatorUserId = $impersonatorUser->getId();
     $result = new Result();
     $impersonatorUser->setPassword($suUserPassword);
     $authResult = $this->rcmUserService->authenticate($impersonatorUser);
     if (!$authResult->isValid()) {
         // ERROR
         // log action
         $this->logAction($impersonatorUserId, $currentUserId, 'SU attempted to switched back, provided incorrect credentials', true);
         $result->setSuccess(false, $authResult->getMessages()[0]);
         return $result;
     }
     // log action
     $this->logAction($impersonatorUserId, $currentUserId, 'SU switched back', true);
     $result->setSuccess(true, 'SU switch back was successful');
     return $result;
 }
 /**
  * switchBack
  *
  * @param array ['suUserPassword' = null]
  *
  * @return Result
  */
 public function switchBack($options = [])
 {
     // Get current user
     $targetUser = $this->rcmUserService->getCurrentUser();
     $result = new Result();
     if (empty($targetUser)) {
         $result->setSuccess(false, 'Not logged in');
         return $result;
     }
     $impersonatorUser = $this->getImpersonatorUser($targetUser);
     if (empty($impersonatorUser)) {
         $result->setSuccess(false, 'Not in SU session');
         return $result;
     }
     return $this->switcher->switchBack($impersonatorUser, $options);
 }