public function authenticateForApp($user_id, $password, $portal_id = 99, $auth_source_id = 0) { el('authenticate ' . $user_id); el('authenticate'); $user_id = $this->_encode_input($user_id); $password = $this->_encode_input($password); $portal_id = $this->_encode_input($portal_id); if (!empty($auth_source_id) and $auth_source_id != 0) { $auth_source_id = $this->_encode_input($auth_source_id); } $result = ''; $info = 'ERROR'; $info_text = 'default-error'; if (empty($user_id) or empty($password)) { el('authenticate 1'); $info = 'ERROR'; $info_text = 'user_id or password lost'; } else { el('authenticate 2'); if (!isset($this->_environment)) { el('authenticate 3'); $info = 'ERROR'; $info_text = 'environment lost'; } else { el('authenticate 4'); $this->_environment->setCurrentContextID($portal_id); $authentication = $this->_environment->getAuthenticationObject(); if (isset($authentication)) { el('authenticate 5'); if ($authentication->isAccountGranted($user_id, $password, $auth_source_id)) { el('authenticate 6'); if ($this->_isSessionActiveForApp($user_id, $portal_id)) { el('authenticate 7'); $result = $this->_getActiveSessionIDForApp($user_id, $portal_id); if (empty($result)) { el('authenticate 8'); $info = 'ERROR'; $info_text = 'no session id from session manager -> database error'; } } else { el('authenticate 9'); // make session include_once 'classes/cs_session_item.php'; $session = new cs_session_item(); $session->createSessionID($user_id); // save portal id in session to be sure, that user didn't // switch between portals $session->setValue('user_id', $user_id); $session->setValue('commsy_id', $portal_id); if (empty($auth_source_id) or $auth_source_id == 0) { $auth_source_id = $authentication->getAuthSourceItemID(); } $session->setValue('auth_source', $auth_source_id); $session->setValue('cookie', '0'); $session->setSoapSession(); // save session $session_manager = $this->_environment->getSessionManager(); $session_manager->save($session); $result = $session->getSessionID(); } } else { $info = 'ERROR'; $info_text = 'account not granted ' . $user_id . ' - ' . $password . ' - ' . $portal_id; } } else { $info = 'ERROR'; $info_text = 'authentication object lost'; } } } el('authenticate: $result ' . $result); el('authenticate: $info ' . $info); el('authenticate: $info_text ' . $info_text); if (empty($result) and !empty($info)) { $result = new SoapFault($info, $info_text); } else { $result = $this->_encode_output($result); } return $result; }