import { CanActivate, ExecutionContext, Injectable, UnauthorizedException, } from '@nestjs/common'; import { PrismaService } from '../../../prisma/prisma.service'; import { assertClinicOrganization } from '../../common/organization-type'; @Injectable() export class ClinicOrgGuard implements CanActivate { constructor(private readonly prisma: PrismaService) {} async canActivate(context: ExecutionContext): Promise { const request = context.switchToHttp().getRequest<{ user?: { organizationId?: string } }>(); const organizationId = request.user?.organizationId; if (!organizationId) { throw new UnauthorizedException('Organization is not selected'); } await assertClinicOrganization(this.prisma, organizationId); return true; } }