28 lines
626 B
TypeScript
28 lines
626 B
TypeScript
import {
|
|
CanActivate,
|
|
ExecutionContext,
|
|
Inject,
|
|
Injectable,
|
|
UnauthorizedException,
|
|
} from "@nestjs/common";
|
|
import { ApiService } from "../api.service";
|
|
|
|
@Injectable()
|
|
export class AdminGuard implements CanActivate {
|
|
constructor(
|
|
@Inject(ApiService)
|
|
private readonly apiService: ApiService
|
|
) {}
|
|
|
|
async canActivate(context: ExecutionContext): Promise<boolean> {
|
|
const request = context.switchToHttp().getRequest();
|
|
const apiToken = request.apiToken;
|
|
|
|
if (!apiToken || !apiToken.isAdmin) {
|
|
throw new UnauthorizedException("Admin privileges are required");
|
|
}
|
|
|
|
return true;
|
|
}
|
|
}
|