49 lines
1.6 KiB
JavaScript
49 lines
1.6 KiB
JavaScript
|
module.exports = function (socket, next) {
|
|||
|
const apiRequestManager = require('../apiRequestManager.js');
|
|||
|
const req = socket.client.request;
|
|||
|
const authService = require('./authService.js')();
|
|||
|
const co = require('co');
|
|||
|
const session = socket.handshake.session;
|
|||
|
|
|||
|
if (req.user) {
|
|||
|
next();
|
|||
|
return;
|
|||
|
}
|
|||
|
|
|||
|
if (!req.cookies || (!req.cookies['asc_auth_key'] && !req.cookies['authorization'])) {
|
|||
|
socket.disconnect('unauthorized');
|
|||
|
next(new Error('Authentication error'));
|
|||
|
return;
|
|||
|
}
|
|||
|
|
|||
|
if(session && session.user && session.portal && typeof(session.mailEnabled) !== "undefined") {
|
|||
|
req.user = session.user;
|
|||
|
req.portal = session.portal;
|
|||
|
req.mailEnabled = session.mailEnabled;
|
|||
|
next();
|
|||
|
return;
|
|||
|
}
|
|||
|
|
|||
|
if(req.cookies['authorization']){
|
|||
|
if(!authService(req)){
|
|||
|
next(new Error('Authentication error'));
|
|||
|
} else{
|
|||
|
next();
|
|||
|
}
|
|||
|
return;
|
|||
|
}
|
|||
|
|
|||
|
co(function*(){
|
|||
|
var batchRequest = apiRequestManager.batchFactory()
|
|||
|
.get("people/@self.json?fields=id,userName,displayName")
|
|||
|
.get("portal.json?fields=tenantId,tenantDomain")
|
|||
|
.get("settings/security/2A923037-8B2D-487b-9A22-5AC0918ACF3F");
|
|||
|
|
|||
|
[session.user, session.portal, session.mailEnabled] = [req.user, req.portal, req.mailEnabled] = yield apiRequestManager.batch(batchRequest, req);
|
|||
|
session.save();
|
|||
|
next();
|
|||
|
}).catch((err) => {
|
|||
|
socket.disconnect('unauthorized');
|
|||
|
next(new Error('Authentication error'));
|
|||
|
});
|
|||
|
}
|