Files
CRM_Montzar/apps/api/src/tracking/public-tracking.controller.ts
T

44 lines
1011 B
TypeScript
Raw Normal View History

import {
Controller,
Get,
Headers,
Param,
Req,
Res,
} from '@nestjs/common';
import type { Request, Response } from 'express';
import { TrackingService } from './tracking.service';
/**
* ریدایرکت عمومی بدون احراز هویت.
* مسیر نهایی: GET /api/t/:token
*/
@Controller('t')
export class PublicTrackingController {
constructor(private readonly tracking: TrackingService) {}
@Get(':token')
async redirect(
@Param('token') token: string,
@Headers('user-agent') userAgent: string | undefined,
@Headers('referer') referer: string | undefined,
@Req() req: Request,
@Res() res: Response,
) {
const ip =
(typeof req.headers['x-forwarded-for'] === 'string'
? req.headers['x-forwarded-for'].split(',')[0]?.trim()
: undefined) ||
req.ip ||
undefined;
const target = await this.tracking.handleClick(token, {
userAgent,
referer,
ip,
});
return res.redirect(302, target);
}
}