import { CanActivate, ExecutionContext, Injectable } from '@nestjs/common'; import { GqlExecutionContext } from '@nestjs/graphql'; import { Request } from 'express'; import { PrismaService } from '../prisma/prisma.service'; @Injectable() export class GroupAuthGuard implements CanActivate { constructor(private prismaService: PrismaService) {} async canActivate(context: ExecutionContext): Promise<boolean> { const ctx = GqlExecutionContext.create(context); const req: Request = ctx.getContext().req; const token = req.headers.authorization; if (!token) return false; req.group = await this.prismaService.group.findFirst({ where: { slug: token }, }); return !!req.group; } }