/**
  * @return string
  * @throws class_exception
  * @permissions edit
  */
 protected function actionSwitchToUser()
 {
     $strReturn = "";
     if (class_module_system_module::getModuleByName("system")->rightEdit() && class_carrier::getInstance()->getObjSession()->isSuperAdmin()) {
         //reset the aspect
         $strAddon = "";
         $objDefaultAspect = class_module_system_aspect::getDefaultAspect();
         if ($objDefaultAspect !== null) {
             $strAddon = "&aspect=" . $objDefaultAspect->getSystemid();
         }
         $objNewUser = new class_module_user_user($this->getSystemid());
         if ($this->objSession->switchSessionToUser($objNewUser)) {
             class_admin_helper::flushActionNavigationCache();
             $this->adminReload(class_link::getLinkAdminHref("dashboard", "", $strAddon));
             return "";
         } else {
             throw new class_exception("session switch failed", class_exception::$level_ERROR);
         }
     } else {
         $strReturn .= $this->getLang("commons_error_permissions");
     }
     return $strReturn;
 }
 /**
  * Returns the aspect currently selected by the user.
  * If no aspect was selected before, the default aspect is returned instead.
  * In addition, the current params are processed in order to react on changes made
  * by the user / external sources.
  *
  * @return class_module_system_aspect null if no aspect is set up
  */
 public static function getCurrentAspect()
 {
     //process params maybe existing
     if (defined("_admin_") && _admin_ && class_carrier::getInstance()->getParam("aspect") != "" && validateSystemid(class_carrier::getInstance()->getParam("aspect"))) {
         self::setCurrentAspectId(class_carrier::getInstance()->getParam("aspect"));
     }
     //aspect registered in session?
     if (validateSystemid(class_carrier::getInstance()->getObjSession()->getSession(class_module_system_aspect::$STR_SESSION_ASPECT_KEY))) {
         if (class_carrier::getInstance()->getObjSession()->getSession(class_module_system_aspect::$STR_SESSION_ASPECT_OBJECT, class_session::$intScopeRequest) !== false) {
             return class_carrier::getInstance()->getObjSession()->getSession(class_module_system_aspect::$STR_SESSION_ASPECT_OBJECT, class_session::$intScopeRequest);
         } else {
             $objAspect = new class_module_system_aspect(class_carrier::getInstance()->getObjSession()->getSession(class_module_system_aspect::$STR_SESSION_ASPECT_KEY));
             class_carrier::getInstance()->getObjSession()->setSession(class_module_system_aspect::$STR_SESSION_ASPECT_OBJECT, $objAspect, class_session::$intScopeRequest);
             return $objAspect;
         }
     }
     $objAspect = class_module_system_aspect::getDefaultAspect();
     if ($objAspect != null) {
         self::setCurrentAspectId($objAspect->getSystemid());
     }
     return $objAspect;
 }