quote($name); $password = $GLOBALS['db']->quote($password); $query = "SELECT * from users where user_name='$name' AND user_hash='$password' AND (portal_only IS NULL OR portal_only !='1') AND (is_group IS NULL OR is_group !='1') AND status !='Inactive'"; $result =$GLOBALS['db']->limitQuery($query,0,1,false); $row = $GLOBALS['db']->fetchByAssoc($result); // set the ID in the seed user. This can be used for retrieving the full user record later //if it's falling back on Sugar Authentication after the login failed on an external authentication return empty if the user has external_auth_disabled for them if (empty ($row) || ($fallback && !empty($row['external_auth_only']))) { return ''; } else { return $row['id']; } } /** * Checks if a user is a sugarLogin user * which implies they should use the sugar authentication to login * * @param STRING $name * @param STRIUNG $password * @return boolean */ function isSugarLogin($name, $password){ $password = SugarAuthenticate::encodePassword($password); $name = $GLOBALS['db']->quote($name); $password = $GLOBALS['db']->quote($password); $query = "SELECT * from users where user_name='$name' AND user_hash='$password' AND (portal_only IS NULL OR portal_only !='1') AND (is_group IS NULL OR is_group !='1') AND status !='Inactive' AND sugar_login=1"; $result =$GLOBALS['db']->limitQuery($query,0,1,false); $row = $GLOBALS['db']->fetchByAssoc($result); if($row)return true; return false; } /** * this is called when a user logs in * * @param STRING $name * @param STRING $password * @param STRING $fallback - is this authentication a fallback from a failed authentication * @return boolean */ function loadUserOnLogin($name, $password, $fallback = false, $PARAMS = array()) { global $login_error; $GLOBALS['log']->debug("Starting user load for ". $name); if(empty($name) || empty($password)) return false; $user_hash = $password; $passwordEncrypted = false; if (!empty($PARAMS) && isset($PARAMS['passwordEncrypted']) && $PARAMS['passwordEncrypted']) { $passwordEncrypted = true; }// if if (!$passwordEncrypted) { $user_hash = SugarAuthenticate::encodePassword($password); } // if $user_id = $this->authenticateUser($name, $user_hash, $fallback); if(empty($user_id)) { $GLOBALS['log']->fatal('SECURITY: User authentication for '.$name.' failed'); return false; } $this->loadUserOnSession($user_id); return true; } /** * Loads the current user bassed on the given user_id * * @param STRING $user_id * @return boolean */ function loadUserOnSession($user_id=''){ if(!empty($user_id)){ $_SESSION['authenticated_user_id'] = $user_id; } if(!empty($_SESSION['authenticated_user_id']) || !empty($user_id)){ $GLOBALS['current_user'] = new User(); if($GLOBALS['current_user']->retrieve($_SESSION['authenticated_user_id'])){ return true; } } return false; } } ?>