/** * static public function for load user from session * @param string $prefix optional prefix for session publiciables * @return mixed DoceboUser instance of logged in user if found user in session * FALSE otherwise **/ public static function &createDoceboUserFromSession($prefix = 'base') { if (!isset($_SESSION['user_enter_time'])) { $_SESSION['user_enter_time'] = date('Y-m-d H:i:s'); } if (isset($_SESSION[$prefix . '_username'])) { $du = new DoceboUser($_SESSION[$prefix . '_username'], $prefix); if (isset($_SESSION['user_enter_mark'])) { if ($_SESSION['user_enter_mark'] < time() - REFRESH_LAST_ENTER) { $du->setLastEnter(date("Y-m-d H:i:s")); $_SESSION['user_enter_mark'] = time(); } } else { $du->setLastEnter(date("Y-m-d H:i:s")); $_SESSION['user_enter_mark'] = time(); } return $du; } else { // rest auth if (Get::sett('use_rest_api') != 'off') { require_once _base_ . '/api/lib/lib.rest.php'; if (Get::sett('rest_auth_method') == _REST_AUTH_TOKEN) { //require_once(_base_.'/lib/lib.utils.php'); $token = Get::req('auth', DOTY_ALPHANUM, ''); if ($token) { $id_user = RestAPI::getUserIdByToken($token); if ($id_user) { $user_manager = new DoceboACLManager(); $user_info = $user_manager->getUser($id_user, false); if ($user_info != false) { $username = $user_info[ACL_INFO_USERID]; $du = new DoceboUser($username, $prefix); $_SESSION['last_enter'] = $user_info[ACL_INFO_LASTENTER]; $du->setLastEnter(date("Y-m-d H:i:s")); $_SESSION['user_enter_mark'] = time(); $du->loadUserSectionST(); $du->SaveInSession(); return $du; } } } } } // kerberos and similar auth if (Get::sett('auth_kerberos') == 'on') { if (isset($_SERVER['REMOTE_USER'])) { // extract username $username = addslashes(substr($_SERVER['REMOTE_USER'], 0, strpos($_SERVER['REMOTE_USER'], '@'))); $user_manager = new DoceboACLManager(); $user_info = $user_manager->getUser(false, $username); if ($user_info != false) { $du = new DoceboUser($username, $prefix); $du->setLastEnter(date("Y-m-d H:i:s")); $_SESSION['user_enter_mark'] = time(); $du->loadUserSectionST(); $du->SaveInSession(); return $du; } } } $du = new DoceboUser('/Anonymous', $prefix); return $du; } }