|
|
@@ -1,12 +1,16 @@
|
|
|
const socketIo = require('socket.io');
|
|
|
+const expressSession = require('express-session');
|
|
|
+const passport = require('passport');
|
|
|
+const socketioSession = require('@kobalab/socket.io-session');
|
|
|
|
|
|
/**
|
|
|
* Serve socket.io for server-to-client messaging
|
|
|
*/
|
|
|
class SocketIoService {
|
|
|
|
|
|
- constructor(configManager) {
|
|
|
- this.configManager = configManager;
|
|
|
+ constructor(crowi) {
|
|
|
+ this.crowi = crowi;
|
|
|
+ this.configManager = crowi.configManager;
|
|
|
|
|
|
this.connectionsCount = 0;
|
|
|
this.connectionsCountForAdmin = 0;
|
|
|
@@ -22,6 +26,12 @@ class SocketIoService {
|
|
|
transports: ['websocket'],
|
|
|
});
|
|
|
|
|
|
+ // setup passport session
|
|
|
+ const sessionMiddleware = socketioSession(expressSession(this.crowi.sessionConfig), passport);
|
|
|
+ this.io.use(sessionMiddleware.express_session);
|
|
|
+ this.io.use(sessionMiddleware.passport_initialize);
|
|
|
+ this.io.use(sessionMiddleware.passport_session);
|
|
|
+
|
|
|
this.io.use(this.checkConnectionLimits.bind(this));
|
|
|
|
|
|
// create namespace for admin
|
|
|
@@ -64,11 +74,9 @@ class SocketIoService {
|
|
|
|
|
|
console.log('default', clients.length);
|
|
|
console.log('admin', adminClients.length);
|
|
|
+ console.log('user', socket.request.user);
|
|
|
|
|
|
- if (socket.request.headers.cookie) {
|
|
|
- console.log('cookie exists');
|
|
|
- next();
|
|
|
- }
|
|
|
+ next();
|
|
|
// next(new Error('Authentication error'));
|
|
|
}
|
|
|
|