mongodb-dynamic-api
Version:
Auto generated CRUD API for MongoDB using NestJS
45 lines • 1.68 kB
JavaScript
;
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