git-svn-id: https://192.168.0.254/svn/Proyectos.Incam_SGD/tags/3.7.0.2_original@1 eb19766c-00d9-a042-a3a0-45cb8ec72764
142 lines
4.4 KiB
PHP
142 lines
4.4 KiB
PHP
<?php
|
|
|
|
class auth extends client_service {
|
|
|
|
public function login(){
|
|
$params=$this->AuthInfo;
|
|
|
|
$username=$params['user'];
|
|
$passhash=$params['passhash'];
|
|
$token=$params['token'];
|
|
$app_type=$params['appType'];
|
|
$session_id=$params['session'];
|
|
$ip=$_SERVER['REMOTE_ADDR'];
|
|
$language=isset($params['language'])?$params['language']:'en';
|
|
|
|
$this->Response->setDebug('parameters',$params);
|
|
|
|
setcookie("kt_language", $language, 2147483647, '/');
|
|
|
|
$kt =& $this->KT;
|
|
|
|
if ($username != 'admin') {
|
|
//$this->addDebug('@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@','');
|
|
|
|
try{
|
|
if(class_exists('BaobabKeyUtil')){
|
|
if (!BaobabKeyUtil::checkIfLicensed(true)) {
|
|
$this->setResponse(array('authenticated'=> false, 'message'=> 'license_expired'));
|
|
$this->addError('Licence Expired');
|
|
return false;
|
|
}
|
|
}else{
|
|
$this->addError('Licence Utility could not be loaded. Appears to be a Community version.');
|
|
$this->setResponse(array('authenticated'=> false, 'message'=> 'Licence Utility could not be loaded. Appears to be a Community version.'));
|
|
return false;
|
|
}
|
|
}catch(Exception $e){
|
|
$this->addError('could not execute BaobabKeyUtil::checkIfLicensed');
|
|
$this->setResponse(array('authenticated'=> false, 'message'=> 'BaobabKeyUtil::checkIfLicensed error'));
|
|
return;
|
|
}
|
|
}
|
|
|
|
$user=$kt->get_user_object_by_username($username);
|
|
if(!PEAR::isError($user)){
|
|
$password=$user->getPassword();
|
|
$localPassHash=md5($password.$token);
|
|
if($localPassHash==$passhash){
|
|
$session=new stdClass();
|
|
$this->Response->setDebug('trying to start session with',array('username'=>$username,'password'=>$password));
|
|
$session = $kt->start_session($username, $params['pass'],NULL,$app_type);
|
|
if(!PEAR::isError($session)){
|
|
$this->Response->setStatus('session_id',$session->get_session());
|
|
}else{
|
|
$this->setResponse(array('authenticated'=> false, 'message'=> 'Invalid username and/or password.'));
|
|
$this->addDebug('failed login',print_r($session,true));
|
|
$this->addError('Unknown Login Error');
|
|
return false;
|
|
}
|
|
}else{
|
|
$this->addError('Incorrect Credentials');
|
|
//throw new Exception('Incorrect Credentials');
|
|
return false;
|
|
}
|
|
}else{
|
|
$this->addError('Incorrect Credentials');
|
|
//throw new Exception('Unrecognized User');
|
|
return false;
|
|
}
|
|
return true;
|
|
}
|
|
|
|
public function japiLogin(){
|
|
global $default;
|
|
|
|
$user=$this->KT->get_user_object_by_username($this->AuthInfo['user']);
|
|
$ret=array(
|
|
'fullName' =>PEAR::isError($user)?'':$user->getName()
|
|
);
|
|
$this->setResponse($ret);
|
|
return true;
|
|
}
|
|
|
|
public function pickup_session(){
|
|
$params=$this->AuthInfo;
|
|
$app_type=$params['appType'];
|
|
$session_id=$params['session'];
|
|
$ip=$_SERVER['REMOTE_ADDR'];
|
|
|
|
$session = $this->KT->get_active_session($session_id, $ip, $app_type);
|
|
|
|
if (PEAR::isError($session)){
|
|
return false;
|
|
}
|
|
$this->Response->setStatus('session_id',$session->get_session());
|
|
return true;
|
|
}
|
|
|
|
|
|
public function ping(){
|
|
global $default;
|
|
$user=$this->KT->get_user_object_by_username($this->AuthInfo['user']);
|
|
$versions=$this->handler->getServerVersions();
|
|
$bestVer=$versions[count($versions)-1];
|
|
$clientVer=$this->handler->getVersion();
|
|
$ret=array(
|
|
'response' =>'pong',
|
|
'loginLocation' => '/index.html',
|
|
'versionok' =>in_array($clientVer,$versions),
|
|
'fullName' =>PEAR::isError($user)?'':$user->getName(),
|
|
'serverVersions' =>$versions,
|
|
'serverBestVersion' =>$bestVer,
|
|
'clientVersion' =>$clientVer,
|
|
'canUpgradeClient' =>($clientVer<$bestVer?true:false),
|
|
'canUpgradeServer' =>($clientVer>$bestVer?true:false)
|
|
|
|
);
|
|
$this->setResponse($ret);
|
|
return true;
|
|
}
|
|
|
|
|
|
function logout($params){
|
|
$params=$this->AuthInfo;
|
|
$app_type=$params['appType'];
|
|
$session_id=$params['session'];
|
|
$ip=$_SERVER['REMOTE_ADDR'];
|
|
|
|
$session = $this->KT->get_active_session($session_id, $ip, $app_type);
|
|
|
|
if (PEAR::isError($session)){
|
|
return false;
|
|
}
|
|
|
|
$session->logout();
|
|
$this->setResponse(array('logout'=>true));
|
|
return true;
|
|
}
|
|
|
|
}
|
|
|
|
?>
|