Properly handle login/logout.

This commit is contained in:
Håvar Aambø Fosstveit
2019-11-04 23:29:54 +01:00
parent d3d3e9626e
commit 98caed6e4a
5 changed files with 80 additions and 23 deletions
+22 -4
View File
@@ -1,4 +1,4 @@
function httpHelper(data)
exports.loginHelper = function(data)
{
const html = `<!DOCTYPE html>
<html>
@@ -10,7 +10,7 @@ function httpHelper(data)
<script type='text/javascript'>
let data = ${JSON.stringify(data)};
window.opener.CLIENT.receiveFromChildWindow(data);
window.opener.CLIENT.receiveLoginChildWindow(data);
window.close();
</script>
@@ -18,6 +18,24 @@ function httpHelper(data)
</html>`;
return html;
}
};
module.exports = httpHelper;
exports.logoutHelper = function()
{
const html = `<!DOCTYPE html>
<html>
<head>
<meta charset='utf-8'>
<title>Multiparty Meeting</title>
</head>
<body>
<script type='text/javascript'>
window.opener.CLIENT.receiveLogoutChildWindow();
window.close();
</script>
</body>
</html>`;
return html;
};
+8 -5
View File
@@ -6,7 +6,6 @@ const config = require('./config/config');
const fs = require('fs');
const http = require('http');
const spdy = require('spdy');
const { constants } = require('crypto');
const express = require('express');
const bodyParser = require('body-parser');
const cookieParser = require('cookie-parser');
@@ -18,7 +17,10 @@ const Room = require('./lib/Room');
const Peer = require('./lib/Peer');
const base64 = require('base-64');
const helmet = require('helmet');
const httpHelper = require('./httpHelper');
const {
loginHelper,
logoutHelper
} = require('./httpHelper');
// auth
const passport = require('passport');
const redis = require('redis');
@@ -88,7 +90,8 @@ const session = expressSession({
store : new RedisStore({ client }),
cookie : {
secure : true,
httpOnly : true
httpOnly : true,
maxAge : 60 * 60 * 1000 // Expire after 1 hour since last request from user
}
});
@@ -268,7 +271,7 @@ async function setupAuth(oidcIssuer)
app.get('/auth/logout', (req, res) =>
{
req.logout();
res.redirect('/');
res.send(logoutHelper());
});
// callback
@@ -301,7 +304,7 @@ async function setupAuth(oidcIssuer)
peer && (peer.displayName = displayName);
peer && (peer.picture = picture);
res.send(httpHelper({
res.send(loginHelper({
displayName,
picture
}));