UNPKG

1.19 kBJavaScriptView Raw
1"use strict";
2Object.defineProperty(exports, "__esModule", { value: true });
3exports.GuardsConsumer = void 0;
4const shared_utils_1 = require("@nestjs/common/utils/shared.utils");
5const rxjs_1 = require("rxjs");
6const execution_context_host_1 = require("../helpers/execution-context-host");
7class GuardsConsumer {
8 async tryActivate(guards, args, instance, callback, type) {
9 if (!guards || (0, shared_utils_1.isEmpty)(guards)) {
10 return true;
11 }
12 const context = this.createContext(args, instance, callback);
13 context.setType(type);
14 for (const guard of guards) {
15 const result = guard.canActivate(context);
16 if (await this.pickResult(result)) {
17 continue;
18 }
19 return false;
20 }
21 return true;
22 }
23 createContext(args, instance, callback) {
24 return new execution_context_host_1.ExecutionContextHost(args, instance.constructor, callback);
25 }
26 async pickResult(result) {
27 if (result instanceof rxjs_1.Observable) {
28 return (0, rxjs_1.lastValueFrom)(result);
29 }
30 return result;
31 }
32}
33exports.GuardsConsumer = GuardsConsumer;