diff --git a/esp/src/Login.html b/esp/src/Login.html index 7ee298a80b5..17435f00ba7 100644 --- a/esp/src/Login.html +++ b/esp/src/Login.html @@ -140,7 +140,7 @@ var d = new Date(); d.setTime(d.getTime() + (exMins * 60 * 1000)); var expires = "expires=" + d.toUTCString(); - document.cookie = cname + "=" + cvalue + ";" + expires + ";path=/"; + document.cookie = cname + "=" + cvalue + ";" + expires + ";"; } if (document.cookie.indexOf("ESPAuthenticationMSG") > -1) { diff --git a/esp/src/eclwatch/HPCCPlatformWidget.js b/esp/src/eclwatch/HPCCPlatformWidget.js index 5f73bd12833..9c6e868195b 100644 --- a/esp/src/eclwatch/HPCCPlatformWidget.js +++ b/esp/src/eclwatch/HPCCPlatformWidget.js @@ -227,7 +227,7 @@ define([ context.checkIfAdmin(context.userName); context.refreshUserName(); if (!cookie("PasswordExpiredCheck")) { - cookie("PasswordExpiredCheck", "true", { expires: 1 }); + cookie("PasswordExpiredCheck", "true", { expires: 1, path: "/" }); if (lang.exists("MyAccountResponse.passwordDaysRemaining", response)) { switch (response.MyAccountResponse.passwordDaysRemaining) { case null: @@ -462,7 +462,7 @@ define([ }, _ondebugLanguageFiles: function () { - /* DEBUG_ONLY + /* DEBUG_ONLY var context = this; require(["src/nls/hpcc"], function (lang) { var languageID = []; diff --git a/esp/src/eclwatch/LockDialogWidget.js b/esp/src/eclwatch/LockDialogWidget.js index 3028c6cd3b5..6b4717b0177 100644 --- a/esp/src/eclwatch/LockDialogWidget.js +++ b/esp/src/eclwatch/LockDialogWidget.js @@ -58,7 +58,6 @@ define([ show: function (event) { var context = this; if (!dojoConfig.username) { - cookie("Status", "Unlocked"); context.storage.setItem("Status", "Unlocked"); topic.publish("hpcc/session_management_status", { status: "Unlocked" @@ -96,7 +95,6 @@ define([ var context = this; if (this.unlockForm.validate()) { - cookie("Status", "login_attempt"); WsAccount.Unlock({ request: { username: this.unlockUserName.get("value"), @@ -113,7 +111,6 @@ define([ topic.publish("hpcc/session_management_status", { status: "Unlocked" }); - cookie("Status", "Unlocked"); context.storage.setItem("Status", "Unlocked"); if (context.idleFired) { dojo.publish("hpcc/brToaster", { @@ -127,7 +124,6 @@ define([ } } else { context.unlockStatus.innerHTML = response.UnlockResponse.Message; - cookie("Status", "Locked"); } }); } @@ -150,10 +146,9 @@ define([ topic.publish("hpcc/session_management_status", { status: "Locked" }); - cookie("Status", "Locked"); context.storage.setItem("Status", "Locked"); - } else if (cookie("Status") === "Unlocked") { - xhr("esp/lock", { + } else { + xhr("/esp/lock", { method: "post" }).then(function (response) { if (response) { @@ -163,7 +158,6 @@ define([ topic.publish("hpcc/session_management_status", { status: "Locked" }); - cookie("Status", "Locked"); context.storage.setItem("Status", "Locked"); } }); diff --git a/esp/src/index.html b/esp/src/index.html index 2ff97b9eed0..976da06abf0 100644 --- a/esp/src/index.html +++ b/esp/src/index.html @@ -38,7 +38,7 @@ } function checkCookie() { - document.cookie.indexOf("ESPAuthenticated=true") > -1 ? window.location.href : window.location.href = location.origin + "#/login"; + document.cookie.indexOf("ESPAuthenticated=true") > -1 ? window.location.href : window.location.href = location.origin + "/esp/files/Login.html"; } function sendAuthRequest() { diff --git a/esp/src/lws.config.js b/esp/src/lws.config.js index 0e147898d37..fa6ee9bc023 100644 --- a/esp/src/lws.config.js +++ b/esp/src/lws.config.js @@ -35,10 +35,10 @@ let rewrite = [ { from: "/esp/files/esp/logout", to: protocol + "://" + ip + ":" + port + "/esp/logout" }, { from: "/esp/files/esp/reset_session_timeout", to: protocol + "://" + ip + ":" + port + "/esp/reset_session_timeout" }, { from: "/esp/files/node_modules/@hpcc-js/(.*)/dist/index.min.js", to: "/node_modules/@hpcc-js/$1/dist/index.js" }, + { from: "/esp/files/(.*)", to: "/build/$1" }, { from: "/esp/files/dist/(.*)", to: "/build/dist/$1" }, { from: "/esp/files/img/(.*)", to: "build/esp/files/img/$1" }, { from: "/esp/files/(.*/*.css)", to: "/build/esp/files/$1" }, - { from: "/esp/files/(.*)", to: "/$1" }, { from: "/main", to: protocol + "://" + ip + ":" + port + "/main" }, { from: "/FileSpray/(.*)", to: protocol + "://" + ip + ":" + port + "/FileSpray/$1" }, { from: "/WsCloud/(.*)", to: protocol + "://" + ip + ":" + port + "/WsCloud/$1" }, diff --git a/esp/src/src-react/components/Frame.tsx b/esp/src/src-react/components/Frame.tsx index 587e48246d3..ee5f89e3d42 100644 --- a/esp/src/src-react/components/Frame.tsx +++ b/esp/src/src-react/components/Frame.tsx @@ -62,7 +62,7 @@ export const Frame: React.FunctionComponent = () => { fireIdle(); } else if (publishedMessage.status === "Idle") { window.localStorage.setItem("pageOnLock", window.location.hash.substring(1)); - setUserSession({ ...userSession, Status: "Locked" }); + setUserSession({ ...userSession }); window.location.reload(); } }); diff --git a/esp/src/src-react/components/Title.tsx b/esp/src/src-react/components/Title.tsx index b41d4843bd0..dfb9f829445 100644 --- a/esp/src/src-react/components/Title.tsx +++ b/esp/src/src-react/components/Title.tsx @@ -111,7 +111,7 @@ export const DevTitle: React.FunctionComponent = ({ fetch("esp/lock", { method: "post" }).then(() => { - setUserSession({ ...userSession, Status: "Locked" }); + setUserSession({ ...userSession }); replaceUrl("/login", null, true); }); } diff --git a/esp/src/src-react/components/forms/Login.tsx b/esp/src/src-react/components/forms/Login.tsx index a6d7d39c769..ce0e71ea9a6 100644 --- a/esp/src/src-react/components/forms/Login.tsx +++ b/esp/src/src-react/components/forms/Login.tsx @@ -116,7 +116,6 @@ export const Login: React.FunctionComponent = ({ setErrorMessage(cookies.ESPAuthenticationMSG); setShowError(true); } else { - cookies["Status"] = "Unlocked"; cookies["ESPAuthenticated"] = "true"; createUserSession(cookies).then(() => { setErrorMessage(""); diff --git a/esp/src/src-react/hooks/user.ts b/esp/src/src-react/hooks/user.ts index 26647d03616..34a1537f2ee 100644 --- a/esp/src/src-react/hooks/user.ts +++ b/esp/src/src-react/hooks/user.ts @@ -7,7 +7,6 @@ const defaults = { ESPSessionTimeout: 7200, ESPAuthenticated: false, ECLWatchUser: false, - Status: "Unlocked", ESPSessionState: false }; @@ -17,7 +16,6 @@ export interface UserSession { ESPSessionTimeout: number; ESPAuthenticated: boolean; ECLWatchUser: boolean; - Status: string; ESPAuthenticationMSG?: string; ESPSessionState: boolean; } @@ -47,6 +45,7 @@ export function useUserSession(): { case "Mixed": case "PerSessionOnly": store.set("ESPSessionState", "true"); + store.set("ESPAuthenticated", "true"); break; case "PerRequestOnly": case "UserNameOnly": @@ -56,7 +55,6 @@ export function useUserSession(): { default: store.set("ESPSessionState", "false"); } - store.set("Status", "Unlocked"); store.set("ECLWatchUser", "true"); }).catch(err => console.log("Unable to create user session.")); }, [store]); diff --git a/esp/src/src-react/index.tsx b/esp/src/src-react/index.tsx index 9a311de9e15..ebaa7c8060a 100644 --- a/esp/src/src-react/index.tsx +++ b/esp/src/src-react/index.tsx @@ -41,7 +41,7 @@ store.getEx(ModernMode, { defaultValue: String(containerized) }).then(async mode const authType = await authTypeResp?.text() ?? "None"; const userStore = cookieKeyValStore(); const userSession = await userStore.getAll(); - if (authType.indexOf("None") < 0 && (userSession["ESPSessionState"] === "false" || userSession["ECLWatchUser"] === "false" || (!userSession["Status"] || userSession["Status"] === "Locked"))) { + if (authType.indexOf("None") < 0 && (userSession["ESPSessionState"] === "false" || userSession["ECLWatchUser"] === "false")) { if (window.location.hash.indexOf("login") < 0) { replaceUrl("/login"); } diff --git a/esp/src/src/ESPRequest.ts b/esp/src/src/ESPRequest.ts index 1fbde9879f9..0f753faa61c 100644 --- a/esp/src/src/ESPRequest.ts +++ b/esp/src/src/ESPRequest.ts @@ -122,7 +122,6 @@ class RequestHelper { status: "DoIdle" }); } - cookie("Status", "Locked"); ESPUtil.LocalStorage.removeItem("Status"); } } diff --git a/esp/src/src/Session.ts b/esp/src/src/Session.ts index 530fe131694..ec5dbe6be63 100644 --- a/esp/src/src/Session.ts +++ b/esp/src/src/Session.ts @@ -3,10 +3,10 @@ import * as xhr from "dojo/request/xhr"; import * as topic from "dojo/topic"; import { format as d3Format } from "@hpcc-js/common"; import { SMCService } from "@hpcc-js/comms"; +import { scopedLogger } from "@hpcc-js/util"; import { cookieKeyValStore } from "src/KeyValStore"; import { singletonDebounce } from "../src-react/util/throttle"; import * as ESPUtil from "./ESPUtil"; -import { scopedLogger } from "@hpcc-js/util"; const logger = scopedLogger("src/Session.ts"); @@ -72,21 +72,16 @@ export function initSession() { }); idleWatcher.start(); - if (!cookie("Status")) { - document.cookie = "Status=Unlocked;Path=/"; - } } else if (cookie("ECLWatchUser")) { window.location.replace(dojoConfig.urlInfo.basePath + "/Login.html"); } } export function lock() { - cookie("Status", "Locked"); idleWatcher.stop(); } export function unlock() { - cookie("Status", "Unlocked"); idleWatcher.start(); } diff --git a/esp/src/src/Utility.ts b/esp/src/src/Utility.ts index e5c0f9117fa..e0435a0ce6f 100644 --- a/esp/src/src/Utility.ts +++ b/esp/src/src/Utility.ts @@ -1058,7 +1058,7 @@ export function parseCookies(): Record { export function deleteCookie(name: string) { const expireDate = new Date(); expireDate.setSeconds(expireDate.getSeconds() + 1); - document.cookie = `${name}=; domain=${window.location.hostname}; path=/; expires=${expireDate.toUTCString()}`; + document.cookie = `${name}=; domain=${window.location.hostname}; expires=${expireDate.toUTCString()}`; } const d3FormatDecimal = d3Format(",.2f");