From 78fd6e1b78626dbe88e5d763299fd6c243849621 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?M=C3=A9sz=C3=A1ros=20Mih=C3=A1ly?= Date: Thu, 2 Jan 2020 09:48:10 +0100 Subject: [PATCH] Init displayName according LTI --- app/src/RoomClient.js | 71 ++++++++++++++++++++++--------------------- app/src/index.js | 5 +-- server/lib/Room.js | 21 +++++++++++++ server/server.js | 9 ++++-- 4 files changed, 68 insertions(+), 38 deletions(-) diff --git a/app/src/RoomClient.js b/app/src/RoomClient.js index 682a74b..09b60a6 100644 --- a/app/src/RoomClient.js +++ b/app/src/RoomClient.js @@ -106,7 +106,7 @@ export default class RoomClient } constructor( - { peerId, accessCode, device, useSimulcast, produce, forceTcp } = {}) + { peerId, accessCode, device, useSimulcast, produce, forceTcp, displayName } = {}) { if (!peerId) throw new Error('Missing peerId'); @@ -114,8 +114,8 @@ export default class RoomClient throw new Error('Missing device'); logger.debug( - 'constructor() [peerId: "%s", device: "%s", useSimulcast: "%s", produce: "%s", forceTcp: "%s"]', - peerId, device.flag, useSimulcast, produce, forceTcp); + 'constructor() [peerId: "%s", device: "%s", useSimulcast: "%s", produce: "%s", forceTcp: "%s", displayName ""]', + peerId, device.flag, useSimulcast, produce, forceTcp, displayName); this._signalingUrl = null; @@ -128,6 +128,9 @@ export default class RoomClient // Wheter we force TCP this._forceTcp = forceTcp; + // Use displayName + store.dispatch(settingsActions.setDisplayName(displayName)); + // Torrent support this._torrentSupport = null; @@ -493,7 +496,7 @@ export default class RoomClient store.dispatch( meActions.setDisplayNameInProgress(true)); - + try { await this.sendRequest('changeDisplayName', { displayName }); @@ -811,7 +814,7 @@ export default class RoomClient catch (error) { logger.error('unmuteMic() | failed: %o', error); - + store.dispatch(requestActions.notify( { type : 'error', @@ -1533,7 +1536,7 @@ export default class RoomClient case 'enteredLobby': { store.dispatch(roomActions.setInLobby(true)); - + const { displayName } = store.getState().settings; const { picture } = store.getState().me; @@ -1702,7 +1705,7 @@ export default class RoomClient store.dispatch( roomActions.setJoinByAccessCode(joinByAccessCode)); - if (joinByAccessCode) + if (joinByAccessCode) { store.dispatch(requestActions.notify( { @@ -1742,10 +1745,10 @@ export default class RoomClient case 'changeDisplayName': { const { peerId, displayName, oldDisplayName } = notification.data; - + store.dispatch( peerActions.setPeerDisplayName(displayName, peerId)); - + store.dispatch(requestActions.notify( { text : intl.formatMessage({ @@ -1756,26 +1759,26 @@ export default class RoomClient displayName }) })); - + break; } - + case 'changePicture': { const { peerId, picture } = notification.data; - + store.dispatch(peerActions.setPeerPicture(peerId, picture)); - + break; } - + case 'chatMessage': { const { peerId, chatMessage } = notification.data; - + store.dispatch( chatActions.addResponseMessage({ ...chatMessage, peerId })); - + if ( !store.getState().toolarea.toolAreaOpen || (store.getState().toolarea.toolAreaOpen && @@ -1786,16 +1789,16 @@ export default class RoomClient roomActions.setToolbarsVisible(true)); this._soundNotification(); } - + break; } - + case 'sendFile': { const { peerId, magnetUri } = notification.data; - + store.dispatch(fileActions.addFile(peerId, magnetUri)); - + store.dispatch(requestActions.notify( { text : intl.formatMessage({ @@ -1803,7 +1806,7 @@ export default class RoomClient defaultMessage : 'New file available' }) })); - + if ( !store.getState().toolarea.toolAreaOpen || (store.getState().toolarea.toolAreaOpen && @@ -1814,27 +1817,27 @@ export default class RoomClient roomActions.setToolbarsVisible(true)); this._soundNotification(); } - + break; } - + case 'producerScore': { const { producerId, score } = notification.data; - + store.dispatch( producerActions.setProducerScore(producerId, score)); - + break; } - + case 'newPeer': { const { id, displayName, picture, device } = notification.data; - + store.dispatch( peerActions.addPeer({ id, displayName, picture, device, consumers: [] })); - + store.dispatch(requestActions.notify( { text : intl.formatMessage({ @@ -1844,20 +1847,20 @@ export default class RoomClient displayName }) })); - + break; } - + case 'peerClosed': { const { peerId } = notification.data; - + store.dispatch( peerActions.removePeer(peerId)); - + break; } - + case 'consumerClosed': { const { consumerId } = notification.data; @@ -1891,7 +1894,7 @@ export default class RoomClient store.dispatch( consumerActions.setConsumerPaused(consumerId, 'remote')); - + break; } diff --git a/app/src/index.js b/app/src/index.js index 4d0e604..441e842 100644 --- a/app/src/index.js +++ b/app/src/index.js @@ -100,7 +100,8 @@ function run() const produce = parameters.get('produce') !== 'false'; const useSimulcast = parameters.get('simulcast') === 'true'; const forceTcp = parameters.get('forceTcp') === 'true'; - + const displayName = parameters.get('displayName'); + // Get current device. const device = deviceInfo(); @@ -112,7 +113,7 @@ function run() ); roomClient = new RoomClient( - { peerId, accessCode, device, useSimulcast, produce, forceTcp }); + { peerId, accessCode, device, useSimulcast, produce, forceTcp, displayName }); global.CLIENT = roomClient; diff --git a/server/lib/Room.js b/server/lib/Room.js index c544768..ebb31c4 100644 --- a/server/lib/Room.js +++ b/server/lib/Room.js @@ -405,6 +405,27 @@ class Room extends EventEmitter case 'join': { + + try + { + if (peer.socket.handshake.session.passport.user.displayName) + { + this._notification( + peer.socket, + 'changeDisplayname', + { + peerId : peer.id, + displayName : peer.socket.handshake.session.passport.user.displayName, + oldDisplayName : '' + }, + true + ); + } + } + catch (error) + { + logger.error(error); + } // Ensure the Peer is not already joined. if (peer.joined) throw new Error('Peer already joined'); diff --git a/server/server.js b/server/server.js index ff073d6..723d7d2 100755 --- a/server/server.js +++ b/server/server.js @@ -390,9 +390,14 @@ async function runHttpsServer() { if (req.secure) { - if (req.isAuthenticated && req.user && req.user._lti) + const ltiURL = new URL(req.protocol + '://' + req.get('host') + req.originalUrl); + + if (req.isAuthenticated && req.user && req.user.displayName && !ltiURL.searchParams.get('displayName')) { - logger.error(req.user._lti); + + + ltiURL.searchParams.append('displayName', req.user.displayName); + res.redirect(ltiURL); } return next();