This repository has been archived on 2024-11-28. You can view files and clone it, but cannot push or open issues or pull requests.
Incam_SGD/webservice/clienttools/services/0.2/auth.php

141 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;
}
}
?>