UNPKG

@eddaic/nestjs-decorators

Version:

Additional decorators intended for use with NestJS framework.

34 lines (33 loc) 1.45 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.GetIp = void 0; exports.getIpFromRequest = getIpFromRequest; const common_1 = require("@nestjs/common"); const class_validator_1 = require("class-validator"); function getIpFromRequest(request) { if (request !== undefined && request !== null && (0, class_validator_1.isObject)(request)) { if ('headers' in request && request.headers !== undefined && request.headers !== null && (0, class_validator_1.isObject)(request.headers) && 'x-forwarded-for' in request.headers && (0, class_validator_1.isString)(request.headers['x-forwarded-for']) && !(0, class_validator_1.isEmpty)(request.headers['x-forwarded-for'])) { // Sanitize forwarded for IPs that can contain proxy IPs as well as client, // * in form `49.43.35.84, 34.110.181.101`. return request.headers['x-forwarded-for'].split(',')[0].trim(); } else if ('ip' in request && (0, class_validator_1.isString)(request.ip) && !(0, class_validator_1.isEmpty)(request.ip)) { return request.ip.trim(); } else { return undefined; } } else { return undefined; } } exports.GetIp = (0, common_1.createParamDecorator)((_data, context) => getIpFromRequest(context.switchToHttp().getRequest()));