Example #1
0
 /**
  * @param int $uID
  * @param boolean $login
  * @return User
  */
 public static function getByUserID($uID, $login = false)
 {
     $db = Loader::db();
     $v = array($uID);
     $q = "SELECT uID, uName, uIsActive, uLastOnline, uTimezone, uDefaultLanguage FROM Users WHERE uID = ?";
     $r = $db->query($q, $v);
     if ($r) {
         $row = $r->fetchRow();
         $nu = new User();
         $nu->uID = $row['uID'];
         $nu->uName = $row['uName'];
         $nu->uIsActive = $row['uIsActive'];
         $nu->uDefaultLanguage = $row['uDefaultLanguage'];
         $nu->uLastLogin = $row['uLastLogin'];
         $nu->uTimezone = $row['uTimezone'];
         $nu->uGroups = $nu->_getUserGroups(true);
         if ($login) {
             $_SESSION['uID'] = $row['uID'];
             $_SESSION['uName'] = $row['uName'];
             $_SESSION['uBlockTypesSet'] = false;
             $_SESSION['uGroups'] = $nu->uGroups;
             $_SESSION['uLastOnline'] = $row['uLastOnline'];
             $_SESSION['uTimezone'] = $row['uTimezone'];
             $_SESSION['uDefaultLanguage'] = $row['uDefaultLanguage'];
             $nu->recordLogin();
         }
     }
     return $nu;
 }
Example #2
0
 /** Return an User instance given its id (or null if it's not found)
  * @param int $uID The id of the user
  * @param boolean $login = false Set to true to make the user the current one
  * @param boolean $cacheItemsOnLogin = false Set to true to cache some items when $login is true
  * @return User|null
  */
 public static function getByUserID($uID, $login = false, $cacheItemsOnLogin = true)
 {
     $db = Loader::db();
     $v = array($uID);
     $q = "SELECT uID, uName, uIsActive, uLastOnline, uTimezone, uDefaultLanguage FROM Users WHERE uID = ? LIMIT 1";
     $r = $db->query($q, $v);
     $row = $r ? $r->FetchRow() : null;
     $nu = null;
     if ($row) {
         $nu = new User();
         $nu->uID = $row['uID'];
         $nu->uName = $row['uName'];
         $nu->uIsActive = $row['uIsActive'];
         $nu->uDefaultLanguage = $row['uDefaultLanguage'];
         $nu->uLastLogin = $row['uLastLogin'];
         $nu->uTimezone = $row['uTimezone'];
         $nu->uGroups = $nu->_getUserGroups(true);
         $nu->superUser = $nu->getUserID() == USER_SUPER_ID;
         if ($login) {
             User::regenerateSession();
             $_SESSION['uID'] = $row['uID'];
             $_SESSION['uName'] = $row['uName'];
             $_SESSION['uBlockTypesSet'] = false;
             $_SESSION['uGroups'] = $nu->uGroups;
             $_SESSION['uLastOnline'] = $row['uLastOnline'];
             $_SESSION['uTimezone'] = $row['uTimezone'];
             $_SESSION['uDefaultLanguage'] = $row['uDefaultLanguage'];
             if ($cacheItemsOnLogin) {
                 Loader::helper('concrete/interface')->cacheInterfaceItems();
             }
             $nu->recordLogin();
         }
     }
     return $nu;
 }
 public function loginAction()
 {
     require_once 'Zend/Auth/Adapter/DbTable.php';
     $request = $this->getRequest();
     $validateOnly = $request->isXmlHttpRequest();
     $userObj = new User();
     $userRow = $userObj->createRow();
     if ($validateOnly) {
         $this->setNoRenderer();
     }
     $status = ValidationContainer::instance();
     if ($request->isPost()) {
         // if a user's already logged in, send them to their account home page
         $auth = Zend_Auth::getInstance();
         if ($auth->hasIdentity()) {
             #				$this->_redirect ( 'select/select' );
         }
         $request = $this->getRequest();
         // determine the page the user was originally trying to request
         $redirect = $this->_getParam('redirect');
         //if (strlen($redirect) == 0)
         //    $redirect = $request->getServer('REQUEST_URI');
         if (strlen($redirect) == 0) {
             if ($this->hasACL('pre_service')) {
                 #					$redirect = 'select/select';
             }
         }
         // initialize errors
         $status = ValidationContainer::instance();
         // process login if request method is post
         if ($request->isPost()) {
             // fetch login details from form and validate them
             $username = $this->getSanParam('username');
             $password = $this->_getParam('password');
             if (!$status->checkRequired($this, 'username', t('Login')) or !$this->_getParam('send_email') and !$status->checkRequired($this, 'password', t('Password'))) {
                 $status->setStatusMessage(t('The system could not log you in.'));
             }
             if (!$status->hasError()) {
                 // setup the authentication adapter
                 $db = Zend_Db_Table_Abstract::getDefaultAdapter();
                 $adapter = new Zend_Auth_Adapter_DbTable($db, 'user', 'username', 'password', 'md5(?)');
                 $adapter->setIdentity($username);
                 $adapter->setCredential($password);
                 // try and authenticate the user
                 $result = $auth->authenticate($adapter);
                 if ($result->isValid()) {
                     $user = new User();
                     $userRow = $user->find($adapter->getResultRowObject()->id)->current();
                     if ($user->hasPS($userRow->id)) {
                         $redirect = $redirect ? $redirect : "select/select";
                     }
                     if ($userRow->is_blocked) {
                         $status->setStatusMessage(t('That user account has been disabled.'));
                         $auth->clearIdentity();
                     } else {
                         // create identity data and write it to session
                         $identity = $user->createAuthIdentity($userRow);
                         $auth->getStorage()->write($identity);
                         // record login attempt
                         $user->recordLogin($userRow);
                         // send user to page they originally request
                         $this->_redirect($redirect);
                     }
                 } else {
                     $auth->clearIdentity();
                     switch ($result->getCode()) {
                         case Zend_Auth_Result::FAILURE_IDENTITY_NOT_FOUND:
                             $status->setStatusMessage(t('That username or password is invalid.'));
                             break;
                         case Zend_Auth_Result::FAILURE_CREDENTIAL_INVALID:
                             $status->setStatusMessage(t('That username or password is invalid.'));
                             break;
                         default:
                             throw new exception('login failure');
                             break;
                     }
                 }
             }
         }
     }
     if ($validateOnly) {
         $this->sendData($status);
     } else {
         $this->view->assign('status', $status);
     }
 }