Consume headers for IP
This commit is contained in:
@@ -2,7 +2,6 @@ import {
|
|||||||
Body,
|
Body,
|
||||||
Controller,
|
Controller,
|
||||||
Get,
|
Get,
|
||||||
Ip,
|
|
||||||
Param,
|
Param,
|
||||||
Post,
|
Post,
|
||||||
Redirect,
|
Redirect,
|
||||||
@@ -19,6 +18,7 @@ import { FilesInterceptor } from '@nestjs/platform-express';
|
|||||||
import { generateUniqueSlug } from 'src/utils/slug';
|
import { generateUniqueSlug } from 'src/utils/slug';
|
||||||
import { JunkDrawerMetadata } from './types';
|
import { JunkDrawerMetadata } from './types';
|
||||||
import { Request, Response } from 'express';
|
import { Request, Response } from 'express';
|
||||||
|
import { ipFromRequest } from 'src/utils/ip';
|
||||||
|
|
||||||
@Controller('junk-drawer')
|
@Controller('junk-drawer')
|
||||||
@ApiTags('junk-drawer')
|
@ApiTags('junk-drawer')
|
||||||
@@ -27,8 +27,9 @@ export class JunkDrawerController {
|
|||||||
|
|
||||||
@Get('')
|
@Get('')
|
||||||
@Render('junk-drawer/upload')
|
@Render('junk-drawer/upload')
|
||||||
async generateUploadForm(@Ip() ip: string) {
|
async generateUploadForm(@Req() req: Request) {
|
||||||
let items: string[] = [];
|
let items: string[] = [];
|
||||||
|
const ip = ipFromRequest(req);
|
||||||
if (ip) {
|
if (ip) {
|
||||||
items = await this.junkDrawerService.getItemsForIp(ip);
|
items = await this.junkDrawerService.getItemsForIp(ip);
|
||||||
}
|
}
|
||||||
@@ -87,7 +88,6 @@ export class JunkDrawerController {
|
|||||||
async handleFileUpload(
|
async handleFileUpload(
|
||||||
@UploadedFiles() files: Express.Multer.File[],
|
@UploadedFiles() files: Express.Multer.File[],
|
||||||
@Req() request: Request,
|
@Req() request: Request,
|
||||||
@Ip() ip: string,
|
|
||||||
@Body('description') description: string,
|
@Body('description') description: string,
|
||||||
@Body('private-ish') privateIsh: boolean,
|
@Body('private-ish') privateIsh: boolean,
|
||||||
@Body('remember') remember: boolean,
|
@Body('remember') remember: boolean,
|
||||||
@@ -95,6 +95,7 @@ export class JunkDrawerController {
|
|||||||
const uniqueSlug = generateUniqueSlug({
|
const uniqueSlug = generateUniqueSlug({
|
||||||
random: privateIsh,
|
random: privateIsh,
|
||||||
});
|
});
|
||||||
|
const ip = ipFromRequest(request);
|
||||||
const metadata: JunkDrawerMetadata = {
|
const metadata: JunkDrawerMetadata = {
|
||||||
slug: uniqueSlug,
|
slug: uniqueSlug,
|
||||||
version: '1.0.0',
|
version: '1.0.0',
|
||||||
|
9
src/utils/ip.ts
Normal file
9
src/utils/ip.ts
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
import { Request } from 'express';
|
||||||
|
|
||||||
|
export const ipFromRequest = (req: Request): string | undefined => {
|
||||||
|
const flyIp = req.headers['fly-client-ip'] as string | undefined;
|
||||||
|
const forwardedFor = (req.headers['x-forwarded-for'] as string)?.split(
|
||||||
|
',',
|
||||||
|
)[0];
|
||||||
|
return flyIp || forwardedFor || req.ip;
|
||||||
|
};
|
Reference in New Issue
Block a user