1 | "use strict";
|
2 | Object.defineProperty(exports, "__esModule", { value: true });
|
3 | exports.GuardsConsumer = void 0;
|
4 | const shared_utils_1 = require("@nestjs/common/utils/shared.utils");
|
5 | const rxjs_1 = require("rxjs");
|
6 | const execution_context_host_1 = require("../helpers/execution-context-host");
|
7 | class 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 | }
|
33 | exports.GuardsConsumer = GuardsConsumer;
|