UNPKG

mongodb-dynamic-api

Version:

Auto generated CRUD API for MongoDB using NestJS

45 lines 1.68 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.BaseGateway = void 0; const websockets_1 = require("@nestjs/websockets"); const lodash_1 = require("lodash"); const dynamic_api_module_1 = require("../dynamic-api.module"); const logger_1 = require("../logger"); class BaseGateway { constructor(jwtService) { this.jwtService = jwtService; this.logger = new logger_1.MongoDBDynamicApiLogger(BaseGateway.name); } addUserToSocket(socket, isPublic) { const isAuthEnabled = dynamic_api_module_1.DynamicApiModule.state.get('isAuthEnabled'); if (!isAuthEnabled || isPublic) { return; } const accessToken = socket.handshake.query.accessToken; let verified; if (accessToken) { try { verified = this.jwtService.verify(accessToken, { secret: dynamic_api_module_1.DynamicApiModule.state.get('jwtSecret'), }); } catch (e) { this.logger.warn('Invalid access token'); this.logger.error(e.message, e.stack); } const { iat, exp, ...user } = verified ?? {}; socket.user = !(0, lodash_1.isEmpty)(user) ? user : undefined; } if (socket.user?.id && verified?.exp > Date.now() / 1000) { return; } throw new websockets_1.WsException('Unauthorized'); } isValidManyBody(body) { return Boolean('ids' in body && Array.isArray(body.ids) && body.ids.length); } } exports.BaseGateway = BaseGateway; //# sourceMappingURL=base.gateway.js.map