All files / libs/kernel/auth/core/src/lib/guards superadmin-auth.guard.ts

0% Statements 0/28
0% Branches 0/1
0% Functions 0/1
0% Lines 0/28

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29                                                         
import { Injectable, UnauthorizedException, type ExecutionContext } from '@nestjs/common';
import { AuthGuard } from '@nestjs/passport';

import { assert, toError } from '@amalia/ext/typescript';
import { type AuthenticatedContext } from '@amalia/kernel/auth/types';

@Injectable()
export class SuperAdminAuthGuard extends AuthGuard('jwt') {
  public override handleRequest<TAuthenticatedContext extends AuthenticatedContext>(
    err: unknown,
    authenticatedContext: TAuthenticatedContext,
    info: unknown,
    context: ExecutionContext,
  ) {
    super.handleRequest(err, authenticatedContext, info, context);

    if (err) {
      throw toError(err);
    }

    assert(
      authenticatedContext.meta?.amaliaImpersonatorEmail,
      new UnauthorizedException('Only super admins can use this endpoint'),
    );

    return authenticatedContext;
  }
}