Fix authorization logic

master
Torjus 2018-07-23 13:25:43 +02:00
parent 6bdc29682b
commit 4f0140ea36
4 changed files with 35 additions and 8 deletions

View File

@ -1089,6 +1089,10 @@ export default class RoomClient
text : `Authenticated successfully: ${request.data}` text : `Authenticated successfully: ${request.data}`
} }
)); ));
this.closeLoginWindow();
break;
} }
case 'raisehand-message': case 'raisehand-message':

View File

@ -439,6 +439,11 @@
} }
} }
}, },
"base-64": {
"version": "0.1.0",
"resolved": "https://registry.npmjs.org/base-64/-/base-64-0.1.0.tgz",
"integrity": "sha1-eAqZyE59YAJgNhURxId2E78k9rs="
},
"bcrypt-pbkdf": { "bcrypt-pbkdf": {
"version": "1.0.2", "version": "1.0.2",
"resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz",

View File

@ -7,6 +7,7 @@
"license": "MIT", "license": "MIT",
"main": "lib/index.js", "main": "lib/index.js",
"dependencies": { "dependencies": {
"base-64": "^0.1.0",
"colors": "^1.1.2", "colors": "^1.1.2",
"debug": "^3.1.0", "debug": "^3.1.0",
"express": "^4.16.3", "express": "^4.16.3",

View File

@ -13,6 +13,8 @@ const protooServer = require('protoo-server');
const Logger = require('./lib/Logger'); const Logger = require('./lib/Logger');
const Room = require('./lib/Room'); const Room = require('./lib/Room');
const Dataporten = require('passport-dataporten'); const Dataporten = require('passport-dataporten');
const utils = require('./util');
const base64 = require('base-64');
/* eslint-disable no-console */ /* eslint-disable no-console */
console.log('- process.env.DEBUG:', process.env.DEBUG); console.log('- process.env.DEBUG:', process.env.DEBUG);
@ -42,7 +44,18 @@ const dataporten = new Dataporten.Setup(config.oauth2);
app.use(dataporten.passport.initialize()); app.use(dataporten.passport.initialize());
app.use(dataporten.passport.session()); app.use(dataporten.passport.session());
dataporten.setupAuthenticate(app, '/login'); app.get('/login', (req, res, next) =>
{
dataporten.passport.authenticate('dataporten', {
state : base64.encode(JSON.stringify({
roomId : req.query.roomId,
peerName : req.query.peerName,
code : utils.random(10)
}))
})(req, res, next);
});
dataporten.setupLogout(app, '/logout'); dataporten.setupLogout(app, '/logout');
app.get( app.get(
@ -52,28 +65,32 @@ app.get(
(req, res) => (req, res) =>
{ {
res.redirect(req.session.redirectToAfterLogin || '/'); const state = JSON.parse(base64.decode(req.query.state));
if (rooms.has(req.query.roomId)) if (rooms.has(state.roomId))
{ {
const room = rooms.get(req.query.roomId)._protooRoom; const room = rooms.get(state.roomId)._protooRoom;
if (room.hasPeer(req.query.peerName)) if (room.hasPeer(state.peerName))
{ {
const peer = room.getPeer(req.query.peerName); const peer = room.getPeer(state.peerName);
peer.send('auth', { peer.send('auth', {
name : req.user.displayName, name : req.user.data.displayName,
picture : req.user.photos[0] picture : req.user.data.photos[0]
}); });
} }
} }
res.send('');
} }
); );
// Serve all files in the public folder as static files. // Serve all files in the public folder as static files.
app.use(express.static('public')); app.use(express.static('public'));
app.use((req, res) => res.sendFile(`${__dirname}/public/index.html`));
const httpsServer = https.createServer(tls, app); const httpsServer = https.createServer(tls, app);
httpsServer.listen(config.listeningPort, '0.0.0.0', () => httpsServer.listen(config.listeningPort, '0.0.0.0', () =>