| import { CanActivate, ExecutionContext, Injectable, UnauthorizedException } from '@nestjs/common'; |
| import { Observable } from 'rxjs'; |
|
|
| @Injectable() |
| export class AdminAuthGuard implements CanActivate { |
| private readonly expectedToken = process.env.ADMIN_TOKEN || 'admin-token'; |
|
|
| canActivate( |
| context: ExecutionContext, |
| ): boolean | Promise<boolean> | Observable<boolean> { |
| const request = context.switchToHttp().getRequest(); |
| const headerToken = request.headers['x-admin-token'] || request.headers['authorization']; |
| const token = typeof headerToken === 'string' && headerToken.startsWith('Bearer ') |
| ? headerToken.slice(7) |
| : headerToken; |
|
|
| if (token === this.expectedToken) { |
| return true; |
| } |
|
|
| throw new UnauthorizedException('Invalid admin token'); |
| } |
| } |
|
|