Further work on sessions and authentication

This commit is contained in:
Håvar Aambø Fosstveit
2019-10-18 14:56:02 +02:00
parent 3495245e37
commit 4181afd1a3
5 changed files with 103 additions and 34 deletions
+50 -2
View File
@@ -34,6 +34,32 @@ class Lobby extends EventEmitter
this._peers = {};
}
authCallback(data, roomLocked)
{
logger.debug('authCallback() | [data:"%o", roomLocked:"%s"]', data, roomLocked);
const {
peerId,
displayName,
picture
} = data;
const peer = this._peers[peerId];
if (peer)
{
this._notification(peer.socket, 'auth', {
displayName : displayName,
picture : picture
});
if (!roomLocked)
{
this.promotePeer(peerId);
}
}
}
peerList()
{
logger.info('peerList()');
@@ -41,6 +67,11 @@ class Lobby extends EventEmitter
return Object.values(this._peers).map((peer) => ({ peerId: peer.peerId, displayName: peer.displayName }));
}
hasPeer(peerId)
{
return Boolean(this._peers[peerId]);
}
promoteAllPeers()
{
logger.info('promoteAllPeers()');
@@ -58,9 +89,12 @@ class Lobby extends EventEmitter
const peer = this._peers[peerId];
this.emit('promotePeer', peer);
if (peer)
{
this.emit('promotePeer', peer);
delete this._peers[peerId];
delete this._peers[peerId];
}
}
parkPeer({ peerId, consume, socket })
@@ -119,6 +153,20 @@ class Lobby extends EventEmitter
}
}
}
_notification(socket, method, data = {}, broadcast = false)
{
if (broadcast)
{
socket.broadcast.to(this._roomId).emit(
'notification', { method, data }
);
}
else
{
socket.emit('notification', { method, data });
}
}
}
module.exports = Lobby;
+4
View File
@@ -260,6 +260,10 @@ class Room extends EventEmitter
picture : picture
});
}
else if (this._lobby.hasPeer(peerId))
{
this._lobby.authCallback(data, this._locked);
}
}
_handlePeer({ peer, consume })