63 lines
1.5 KiB
JavaScript
63 lines
1.5 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"));
|
|
});
|
|
};
|