/** * Handling the Soap Logout Request * Should remove the session and go back to login page. * @param sessionId */ public function Logout() { $sid = $this->getParamValue(0); $removed = 0; if ($sid) { $ses = $sesReload = CalemSession::load($sid); if ($sesReload) { //Found a valid session so let's remove it $removed = 1; $sesReload->remove(); } } if ($this->logger->isDebugEnabled()) { $this->logger->debug("Logout, sid=" . $sid . " sessionFound=" . ($sesReload ? $sesReload->toString() : "Session not found")); } //Always return a correct value return array('sid' => $sid, 'removed' => $removed); }
require_once _CALEM_DIR_ . 'server/include/core/CalemFactory.php'; require_once _CALEM_DIR_ . 'server/include/core/session/CalemSession.php'; function addCustomInfo($path, $id, $subsets, $list) { foreach ($subsets as $value) { $list[] = array('id' => $path . $id, 'ext' => $value); } return $list; } //Start handling the request. $logger =& LoggerManager::getLogger('JsPkgCustom'); $sid = isset($_REQUEST['sessionId']) ? $_REQUEST['sessionId'] : null; $cont = false; if ($sid) { //Let's verify session validity $sesReload = CalemSession::load($sid); if ($sesReload) { //Found a valid session so let's grant access $cont = true; if ($logger->isInfoEnabled()) { $logger->info("Found the correct session: " . $sesReload->toString()); } $userRow = $sesReload->get('user'); $setting = $sesReload->get('setting'); $lang = $setting['lang']; $loadmode = $setting['loadmode']; } } if (!$cont) { $logger->error("sid=" . $sid . " not found, service not provided"); die("Session is not valid, service is not provided.");
/** * Authenticate the request by inspecting the sessionId passed in. */ private function authenticate() { if (!$this->reqHeaders || !is_array($this->reqHeaders)) { return false; } //Let's find out the sessionId field foreach ($this->reqHeaders as $reqh) { if ($reqh->name === CALEM_SOAP_SESSIONID) { $sid = $reqh->value; break; } } if (!isset($sid)) { $this->logger->error("sid not set, authentication failed"); return false; } //Verify sessionId and lifetime $sesReload = CalemSession::load($sid); if (!isset($sesReload)) { return false; } //Refresh timeout setting. $sesReload->renew(); //Keep track of the userId for data operation $GLOBALS['calem_ses_data'] = $sesReload->get('user'); return true; }