default: return ERROR | @Trigger_Error(101); } } else { #----------------------------------------------------------------------------- $UserID = $Session->Data['RootID']; #----------------------------------------------------------------------------- $UsersIDs = array($UserID); } #------------------------------------------------------------------------------- if (!SetCookie(Md5($__USER['ID']), @$_SERVER['HTTP_REFERER'], Time() + 86400, '/')) { return ERROR | @Trigger_Error(500); } #------------------------------------------------------------------------------- $User = Comp_Load('Users/Init', $UserID); if (Is_Error($User)) { return ERROR | @Trigger_Error(500); } #------------------------------------------------------------------------------- if (Is_Error($Session->Save())) { return ERROR | @Trigger_Error(500); } #------------------------------------------------------------------------------- $Redirect = SPrintF('/%s/Home', $User['InterfaceID']); #------------------------------------------------------------------------------- if (isset($_COOKIE[$Key = Md5($UserID)])) { $Redirect = $_COOKIE[$Key]; } #------------------------------------------------------------------------------- return array('Status' => 'Ok', 'Redirect' => $Redirect); #-------------------------------------------------------------------------------
/** * function to start a web services session in ProcessMaker * * @param string $userid * @param string $password * @return $wsResponse will return an object */ public function login ($userid, $password) { global $RBAC; try { $uid = $RBAC->VerifyLogin( $userid, $password ); switch ($uid) { case '': case - 1: //The user doesn't exist $wsResponse = new wsResponse( 3, G::loadTranslation( 'ID_USER_NOT_REGISTERED' ) ); break; case - 2: //The password is incorrect $wsResponse = new wsResponse( 4, G::loadTranslation( 'ID_WRONG_PASS' ) ); break; case - 3: //The user is inactive $wsResponse = new wsResponse( 5, G::loadTranslation( 'ID_USER_INACTIVE' ) ); break; case - 4: //The Due date is finished $wsResponse = new wsResponse( 5, G::loadTranslation( 'ID_USER_INACTIVE' ) ); break; } if ($uid < 0 || $uid == '') { throw (new Exception( serialize( $wsResponse ) )); } //check access to PM $RBAC->loadUserRolePermission( $RBAC->sSystem, $uid ); $res = $RBAC->userCanAccess( "PM_LOGIN" ); if ($res != 1) { //if ($res == -2) // $wsResponse = new wsResponse(1, G::loadTranslation('ID_USER_HAVENT_RIGHTS_SYSTEM')); //else $wsResponse = new wsResponse( 2, G::loadTranslation( 'ID_USER_HAVENT_RIGHTS_SYSTEM' ) ); throw (new Exception( serialize( $wsResponse ) )); } $sessionId = G::generateUniqueID(); $wsResponse = new wsResponse( '0', $sessionId ); $session = new Session(); $session->setSesUid( $sessionId ); $session->setSesStatus( 'ACTIVE' ); $session->setUsrUid( $uid ); $session->setSesRemoteIp( $_SERVER['REMOTE_ADDR'] ); $session->setSesInitDate( date( 'Y-m-d H:i:s' ) ); $session->setSesDueDate( date( 'Y-m-d H:i:s', mktime( date( 'H' ), date( 'i' ) + 15, date( 's' ), date( 'm' ), date( 'd' ), date( 'Y' ) ) ) ); $session->setSesEndDate( '' ); $session->Save(); //save the session in DataBase return $wsResponse; } catch (Exception $e) { $wsResponse = unserialize( $e->getMessage() ); return $wsResponse; } }
$UM->mail_prefix = $sess["folder_prefix"] = $f_prefix; $refr = 1; } elseif ($sess["auth"] && intval((time() - $start) / 60) < $idle_timeout) { $UM->mail_user = $f_user = $sess["user"]; $UM->mail_pass = $f_pass = $sess["pass"]; $UM->mail_server = $f_server = $sess["server"]; $UM->mail_email = $f_email = $sess["email"]; $UM->mail_port = $f_port = $sess["port"]; $UM->mail_protocol = $f_protocol = $sess["protocol"]; $UM->mail_prefix = $f_prefix = $sess["folder_prefix"]; } else { redirect("./index.php?tid={$tid}&lid={$lid}"); exit; } $sess["start"] = time(); $SS->Save($sess); $userfolder = $temporary_directory . ereg_replace("[^a-z0-9\\._-]", "_", strtolower($f_user)) . "_" . strtolower($f_server) . "/"; $UM->debug = $enable_debug; $UM->use_html = $allow_html; $UM->user_folder = $userfolder; $UM->temp_folder = $temporary_directory; $UM->timeout = $idle_timeout; $prefs = load_prefs(); $UM->timezone = $prefs["timezone"]; $UM->charset = $default_char_set; /* Don't remove the fallowing lines, or you will be problems with browser's cache */ Header("Expires: Wed, 11 Nov 1998 11:11:11 GMT\r\n" . "Cache-Control: no-cache\r\n" . "Cache-Control: must-revalidate"); $nocache = "\n<META HTTP-EQUIV=\"Cache-Control\" CONTENT=\"no-cache\">\n<META HTTP-EQUIV=\"Expires\" CONTENT=\"-1\">"; // Sort rules