mirror of https://github.com/sylv/micro.git
21 lines
700 B
TypeScript
21 lines
700 B
TypeScript
import { BadRequestException, CallHandler, CanActivate, ExecutionContext, Injectable } from "@nestjs/common";
|
|
import { FastifyRequest } from "fastify";
|
|
import { config } from "../../config";
|
|
|
|
@Injectable()
|
|
export class HostsGuard implements CanActivate {
|
|
canActivate(context: ExecutionContext) {
|
|
const request = context.switchToHttp().getRequest<FastifyRequest>();
|
|
const referer = request.headers["referer"];
|
|
if (!referer) {
|
|
request.host = config.hosts[0];
|
|
return true;
|
|
}
|
|
|
|
const host = config.hosts.find((host) => host.pattern.test(referer));
|
|
if (!host) throw new BadRequestException('Invalid "referer" header.');
|
|
request.host = host;
|
|
return true;
|
|
}
|
|
}
|