/**
  * Get the currently loggin in user
  *
  * @return \Gems_User_User
  */
 public final function getCurrentUser()
 {
     if (!self::$currentUser) {
         if ($this->session->__isset('__user_definition')) {
             $defName = $this->session->__get('__user_definition');
             // Check for during upgrade. Remove for version 1.6
             if (substr($defName, -10, 10) != 'Definition') {
                 $defName .= 'Definition';
             }
             self::$currentUser = $this->_loadClass('User', true, array($this->session, $this->_getClass($defName)));
         } else {
             if (\MUtil_Console::isConsole()) {
                 if (!$this->project->isConsoleAllowed()) {
                     echo "Accessing " . GEMS_PROJECT_NAME . " from the command line is not allowed.\n";
                     exit;
                 }
                 $request = \Zend_Controller_Front::getInstance()->getRequest();
                 if ($request instanceof \MUtil_Controller_Request_Cli && $request->hasUserLogin()) {
                     $user = $this->getUser($request->getUserName(), $request->getUserOrganization());
                     $authResult = $user->authenticate($request->getUserPassword());
                     if (!$authResult->isValid()) {
                         echo "Invalid user login data.\n";
                         echo implode("\n", $authResult->getMessages());
                         exit;
                     }
                     self::$currentUser = $user;
                 } elseif ($this->project->getConsoleRole()) {
                     // \MUtil_Echo::track($this->request->getUserName(), $this->request->getUserOrganization());
                     self::$currentUser = $this->loadUser(self::USER_CONSOLE, 0, '(system)');
                 }
             }
             if (!self::$currentUser) {
                 self::$currentUser = $this->getUser(null, self::SYSTEM_NO_ORG);
             }
             self::$currentUser->setAsCurrentUser();
         }
     }
     return self::$currentUser;
 }