mirror of
https://github.com/sergeyyarkov/educt-server.git
synced 2026-10-11 10:19:20 +03:00
45 lines
2.1 KiB
JavaScript
45 lines
2.1 KiB
JavaScript
"use strict";
|
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
};
|
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
const nanoid_1 = require("nanoid");
|
|
const Redis_1 = __importDefault(global[Symbol.for('ioc.use')]("Adonis/Addons/Redis"));
|
|
const CookieHelper_1 = __importDefault(global[Symbol.for('ioc.use')]("App/Helpers/CookieHelper"));
|
|
const OpaqueTokenHelper_1 = __importDefault(global[Symbol.for('ioc.use')]("App/Helpers/OpaqueTokenHelper"));
|
|
const WsService_1 = __importDefault(global[Symbol.for('ioc.use')]("App/Services/WsService"));
|
|
class AuthMiddleware {
|
|
static async authenticate(socket, next) {
|
|
const cookie = socket.handshake.headers?.cookie;
|
|
if (!cookie) {
|
|
return next(new Error('SocketErrors.MissingParameter'));
|
|
}
|
|
const token = CookieHelper_1.default.parseCookieString(cookie)?.token;
|
|
if (!token) {
|
|
return next(new Error('SocketErrors.MissingParameter'));
|
|
}
|
|
const tokenData = JSON.parse(Buffer.from(token.split('.')[0].split(':')[1], 'base64').toString('utf-8'));
|
|
const parsed = OpaqueTokenHelper_1.default.parseToken(tokenData.message);
|
|
const data = await Redis_1.default.get(`api:${parsed.id}`);
|
|
if (!data) {
|
|
return next(new Error('SocketErrors.BadCredentials'));
|
|
}
|
|
const sessionId = socket.handshake.auth.sessionId;
|
|
if (sessionId) {
|
|
const session = await WsService_1.default.sessionStore.findSession(sessionId);
|
|
if (session) {
|
|
socket.data.sessionId = sessionId;
|
|
socket.data.userId = session.userId;
|
|
socket.data.userName = session.userName;
|
|
return next();
|
|
}
|
|
}
|
|
const parsedData = JSON.parse(data);
|
|
socket.data.sessionId = (0, nanoid_1.nanoid)();
|
|
socket.data.userId = parsedData.user_id;
|
|
socket.data.userName = parsedData.userName;
|
|
return next();
|
|
}
|
|
}
|
|
exports.default = AuthMiddleware;
|
|
//# sourceMappingURL=Auth.js.map
|