Skip to content

Fgh url enhancements #61

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

Closed
wants to merge 12 commits into from
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
37 changes: 28 additions & 9 deletions web-portal/client/js/main.js
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
/*******************************************************************************
*
*
* main.js: Page-level code used by the main.pug page.
*
*
*
*
* 2022-03-09 Frank Halasz
*
*
* Copyright: 2022 by Interlisp.org
*
*
*
* Copyright: 2022 by Interlisp.org
*
*
******************************************************************************/

Expand All @@ -21,7 +21,7 @@
var localStore;

window.addEventListener('resize', (event) => {
fillWindowOnClick();
fillWindowOnClick();
});

window.addEventListener('load', (event) => {
Expand All @@ -30,6 +30,14 @@ window.addEventListener('load', (event) => {
const rr = urlParams.get('rr') || false;
const fromvnc = urlParams.get('fromvnc') || false;

if (isAutoLogin) {
document.body.style.backgroundImage = "url('images/logos/logo_red_no_border_568x385.png')";
document.body.style.backgroundRepeat = "no-repeat";
document.body.style.backgroundPosition = "center";
document.body.style.position = "relative";
}
else document.getElementById("page-container").style.visibility = "visible";

if (targetSystem == "Notecards") {
document.getElementById("fill_window_cb").checked = true;
document.getElementById("dev-div").style.display = "none";
Expand All @@ -50,6 +58,14 @@ window.addEventListener('load', (event) => {
document.getElementById("custom_init_cb").checked = false;
document.getElementById("sftp_checkbox").checked = false;
document.getElementById("interlisp_rb").checked = true;
} else if(isAutoLogin) {
document.getElementById("fill_window_cb").checked = true;
document.getElementById("dev-div").style.display = "none";
document.getElementById("do_not_checkbox_div").style.display = "none";
document.getElementById("run_notecards_cb").checked = alNotecards;
document.getElementById("run_rooms_cb").checked = alRooms;
document.getElementById("sftp_checkbox").checked = false;
document.getElementById("interlisp_rb").checked = true;
} else if(isGuest) {
document.getElementById("fill_window_cb").checked = true;
document.getElementById("dev-div").style.display = "none";
Expand Down Expand Up @@ -85,7 +101,7 @@ window.addEventListener('load', (event) => {
fillWindowOnClick();
document.getElementById("dev-options-checkbox").checked = (localStore.getItem("show_dev_options") == "true");
showDevOptionsOnClick();
if(! fromvnc) {
if( ! (isAutoLogin || fromvnc)) {
if(isVerified != true) {
const dlg = document.getElementById(rr ? "verification-dialog2" : "verification-dialog1");
dlg.showModal();
Expand All @@ -97,6 +113,7 @@ window.addEventListener('load', (event) => {
dlg.showModal();
}
}
if(isAutoLogin && (! fromvnc)) startSession("interlisp");
});

function startSession (interlispOrXterm) {
Expand Down Expand Up @@ -165,6 +182,7 @@ function startSession (interlispOrXterm) {
+ `&rooms=${runRooms || "false"}`
+ `&sftp=${startSftp || "false"}`
+ `&exec=${medleyExec || "inter"}`
+ ( isAutoLogin ? "&autologin" : "")
);
}
);
Expand All @@ -181,6 +199,7 @@ function startSession (interlispOrXterm) {
+ `&rooms=${runRooms || "false"}`
+ `&sftp=${startSftp || "false"}`
+ `&exec=${medleyExec || "inter"}`
+ ( isAutoLogin ? "&autologin" : "")
);
}
},
Expand Down
5 changes: 4 additions & 1 deletion web-portal/client/novnc_oio/ui.js
Original file line number Diff line number Diff line change
Expand Up @@ -1161,7 +1161,10 @@ const UI = {
//
// UI.openControlbar();
// UI.openConnectPanel();
window.location.assign(window.location.origin + "/main?fromvnc=1");
if(document.location.href.match(/autologin/))
window.location.assign(window.location.origin + "/main?fromvnc=1&autologin=1");
else
window.location.assign(window.location.origin + "/main?fromvnc=1");
},

securityFailed(e) {
Expand Down
4 changes: 4 additions & 0 deletions web-portal/client/stylesheets/main.css
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,10 @@
*
**************************************************************************/

#page-container {
visibility: hidden;
}

#logged-in-as {
font-size: 15px;
font-style: italic;
Expand Down
3 changes: 3 additions & 0 deletions web-portal/client/views/main.pug
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,9 @@ block headeradds
const isGuest = #{isGuest};
const isVerified = #{isVerified};
const nodisclaimer = #{nodisclaimer};
const isAutoLogin = #{isAutoLogin};
const alNotecards = #{notecards};
const alRooms = #{rooms};

link(rel="stylesheet", href="/stylesheets/main.css")

Expand Down
28 changes: 22 additions & 6 deletions web-portal/server/js/app.js
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ const express = require('express');
const logger = require('morgan');
const session = require("express-session");
const passport = require('passport');
const url = require('url');
//const favicon = require('serve-favicon')

// Set up main app as well as the filesApp
Expand Down Expand Up @@ -86,17 +87,32 @@ app.use('/js', express.static(config.clientJsPath));
app.get('/main',
ensureLoggedIn(),
async (req, res, next) =>
{ res.render('main',
{
res.render('main',
{
login: req.user.username,
isGuest: (req.user.username == config.guestUsername),
isVerified: (await userRouter.getIsVerified(req) ? 'true' : 'false'),
nodisclaimer: (await userRouter.getNoDisclaimer(req) ? 'true' : 'false'),
isNCO: config.isNCO(req)
}
);
}
);
isNCO: config.isNCO(req),
isAutoLogin: (req.query.autologin != undefined),
notecards: (req.query.notecards != undefined),
rooms: (req.query.rooms != undefined)
}
);
}
);
app.get('/guest',
(req, res) => {
const newQuery = {};
newQuery.autologin = "";
newQuery.username = config.guestUsername;
newQuery.password = config.guestPassword;
if(req.query.notecards != undefined) newQuery.notecards="";
if(req.query.rooms != undefined) newQuery.rooms="";
res.redirect(url.format({pathname:"/user/autologin", query: newQuery}));
}
);
app.use('/user', userRouter);
app.use('/medley', ensureLoggedIn(), medleyRouter);
app.use('/client', ensureLoggedIn(), clientRouter);
Expand Down
1 change: 1 addition & 0 deletions web-portal/server/js/medley.js
Original file line number Diff line number Diff line change
Expand Up @@ -272,6 +272,7 @@ function goToVnc(req, res, next) {
var url = `/client/go?target=${req.oioTarget}&port=${req.oioPort}&autoconnect=1&view_only=0`;
url = `${url}${config.supportHttps ? "&encrypt=1" : ""}&u=${req.user.uname}&p=${req.sftpPwd}`;
if(config.isNCO(req)) url = `${url}&nco=1`;
if(req.query.autologin != undefined) url = `${url}&autologin=1`;
res.redirect(url);
}

Expand Down
79 changes: 45 additions & 34 deletions web-portal/server/js/user.js
Original file line number Diff line number Diff line change
Expand Up @@ -92,44 +92,55 @@ passport.deserializeUser(userModel.deserializeUser());
//
//

userRouter.post('/login',
(req, res, next) => {
passport.authenticate('local',
(err, user, info) => {
if (err) {
return next(err);
}
function passportAuthenticate(req, res, next) {
passport.authenticate('local',
(err, user, info) => {
if (err) {
return next(err);
}

if (!user) {
console.dir(info);
return res.redirect('/user/login?info=' + info);
}
if (!user) {
console.dir(info);
return res.redirect('/user/login?info=' + info);
}


req.logIn(user, async function(err) {
if (err) {
req.logIn(user,
async function(err) {
if (err) {
return next(err);
} else {
try {
await userModel.updateOne({username: user.username},{$set: {lastLogin: Date.now()}, $inc: {numLogins : 1}});
} catch (err) {
console.log("Update last login time error: " + err);
}
try {
await loginModel.create({username: user.username, timestamp: Date.now()});
} catch (err) {
console.log("Error in logging login: " + err);
}
if(user.uname)
return res.redirect('/main');
else
return res.render('reregister', {isNCO: config.isNCO(req)});
}
});

})(req, res, next);
}
);
} else {
try {
await userModel.updateOne({username: user.username},{$set: {lastLogin: Date.now()}, $inc: {numLogins : 1}});
} catch (err) {
console.log("Update last login time error: " + err);
}
try {
await loginModel.create({username: user.username, timestamp: Date.now()});
} catch (err) {
console.log("Error in logging login: " + err);
}
if(user.uname)
if ((user.uname == "guest") && (req.query.autologin != undefined)) {
const newQuery={};
newQuery.autologin="";
if(req.query.notecards != undefined) newQuery.notecards="";
if(req.query.rooms != undefined) newQuery.rooms="";
return res.redirect(url.format({pathname:"/main", query: newQuery}));
}
else
return res.redirect('/main');
else
return res.render('reregister', {isNCO: config.isNCO(req)});
}
}
);
}
)(req, res, next);
}

userRouter.post('/login', passportAuthenticate);
userRouter.get('/autologin', passportAuthenticate);

userRouter.get('/login',
(req, res) => {
Expand Down