Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

HPCC-28452 ECL Watch fix "Session is locked" messages #18489

Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion esp/src/Login.html
Original file line number Diff line number Diff line change
Expand Up @@ -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) {
Expand Down
4 changes: 2 additions & 2 deletions esp/src/eclwatch/HPCCPlatformWidget.js
Original file line number Diff line number Diff line change
Expand Up @@ -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:
Expand Down Expand Up @@ -462,7 +462,7 @@ define([
},

_ondebugLanguageFiles: function () {
/* DEBUG_ONLY
/* DEBUG_ONLY
var context = this;
require(["src/nls/hpcc"], function (lang) {
var languageID = [];
Expand Down
10 changes: 2 additions & 8 deletions esp/src/eclwatch/LockDialogWidget.js
Original file line number Diff line number Diff line change
Expand Up @@ -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"
Expand Down Expand Up @@ -96,7 +95,6 @@ define([
var context = this;

if (this.unlockForm.validate()) {
cookie("Status", "login_attempt");
WsAccount.Unlock({
request: {
username: this.unlockUserName.get("value"),
Expand All @@ -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", {
Expand All @@ -127,7 +124,6 @@ define([
}
} else {
context.unlockStatus.innerHTML = response.UnlockResponse.Message;
cookie("Status", "Locked");
}
});
}
Expand All @@ -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) {
Expand All @@ -163,7 +158,6 @@ define([
topic.publish("hpcc/session_management_status", {
status: "Locked"
});
cookie("Status", "Locked");
context.storage.setItem("Status", "Locked");
}
});
Expand Down
2 changes: 1 addition & 1 deletion esp/src/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -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() {
Expand Down
2 changes: 1 addition & 1 deletion esp/src/lws.config.js
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ let rewrite = [
{ 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: "/esp/files/(.*)", to: "/build/$1" },
{ from: "/main", to: protocol + "://" + ip + ":" + port + "/main" },
{ from: "/FileSpray/(.*)", to: protocol + "://" + ip + ":" + port + "/FileSpray/$1" },
{ from: "/WsCloud/(.*)", to: protocol + "://" + ip + ":" + port + "/WsCloud/$1" },
Expand Down
2 changes: 1 addition & 1 deletion esp/src/src-react/components/Frame.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,7 @@ export const Frame: React.FunctionComponent<FrameProps> = () => {
fireIdle();
} else if (publishedMessage.status === "Idle") {
window.localStorage.setItem("pageOnLock", window.location.hash.substring(1));
setUserSession({ ...userSession, Status: "Locked" });
setUserSession({ ...userSession });
window.location.reload();
}
});
Expand Down
2 changes: 1 addition & 1 deletion esp/src/src-react/components/Title.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -111,7 +111,7 @@ export const DevTitle: React.FunctionComponent<DevTitleProps> = ({
fetch("esp/lock", {
method: "post"
}).then(() => {
setUserSession({ ...userSession, Status: "Locked" });
setUserSession({ ...userSession });
replaceUrl("/login", null, true);
});
}
Expand Down
1 change: 0 additions & 1 deletion esp/src/src-react/components/forms/Login.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -116,7 +116,6 @@ export const Login: React.FunctionComponent<LoginProps> = ({
setErrorMessage(cookies.ESPAuthenticationMSG);
setShowError(true);
} else {
cookies["Status"] = "Unlocked";
cookies["ESPAuthenticated"] = "true";
createUserSession(cookies).then(() => {
setErrorMessage("");
Expand Down
4 changes: 1 addition & 3 deletions esp/src/src-react/hooks/user.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,6 @@ const defaults = {
ESPSessionTimeout: 7200,
ESPAuthenticated: false,
ECLWatchUser: false,
Status: "Unlocked",
ESPSessionState: false
};

Expand All @@ -17,7 +16,6 @@ export interface UserSession {
ESPSessionTimeout: number;
ESPAuthenticated: boolean;
ECLWatchUser: boolean;
Status: string;
ESPAuthenticationMSG?: string;
ESPSessionState: boolean;
}
Expand Down Expand Up @@ -47,6 +45,7 @@ export function useUserSession(): {
case "Mixed":
case "PerSessionOnly":
store.set("ESPSessionState", "true");
store.set("ESPAuthenticated", "true");
break;
case "PerRequestOnly":
case "UserNameOnly":
Expand All @@ -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]);
Expand Down
2 changes: 1 addition & 1 deletion esp/src/src-react/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -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");
}
Expand Down
1 change: 0 additions & 1 deletion esp/src/src/ESPRequest.ts
Original file line number Diff line number Diff line change
Expand Up @@ -122,7 +122,6 @@ class RequestHelper {
status: "DoIdle"
});
}
cookie("Status", "Locked");
ESPUtil.LocalStorage.removeItem("Status");
}
}
Expand Down
7 changes: 1 addition & 6 deletions esp/src/src/Session.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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");

Expand Down Expand Up @@ -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();
}

Expand Down
2 changes: 1 addition & 1 deletion esp/src/src/Utility.ts
Original file line number Diff line number Diff line change
Expand Up @@ -1058,7 +1058,7 @@ export function parseCookies(): Record<string, any> {
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");
Expand Down
Loading