@tsclean/core
Version:
Plugin for API Rest Full development, based on Clean Architecture, IoC and Dependency Injection.
34 lines • 4.59 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.GuardsConsumer = void 0;
const rxjs_1 = require("rxjs");
const execution_context_host_1 = require("../../helpers/execution-context-host");
const shared_utils_1 = require("../../utils/shared.utils");
class GuardsConsumer {
async tryActivate(guards, args, instance, callback, type) {
if (!guards || (0, shared_utils_1.isEmpty)(guards)) {
return true;
}
const context = this.createContext(args, instance, callback);
context.setType(type);
for (const guard of guards) {
const result = guard.canActivate(context);
if (await this.pickResult(result)) {
continue;
}
return false;
}
return true;
}
createContext(args, instance, callback) {
return new execution_context_host_1.ExecutionContextHost(args, instance.constructor, callback);
}
async pickResult(result) {
if (result instanceof rxjs_1.Observable) {
return (0, rxjs_1.lastValueFrom)(result);
}
return result;
}
}
exports.GuardsConsumer = GuardsConsumer;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3VhcmRzLWNvbnN1bWVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvcmUvZ3VhcmRzL2d1YXJkcy1jb25zdW1lci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSwrQkFBaUQ7QUFDakQsaUZBQTRFO0FBRTVFLDJEQUFtRDtBQUduRCxNQUFhLGNBQWM7SUFDbEIsS0FBSyxDQUFDLFdBQVcsQ0FDdEIsTUFBcUIsRUFDckIsSUFBZSxFQUNmLFFBQXdCLEVBQ3hCLFFBQXlDLEVBQ3pDLElBQWU7UUFFZixJQUFJLENBQUMsTUFBTSxJQUFJLElBQUEsc0JBQU8sRUFBQyxNQUFNLENBQUMsRUFBRSxDQUFDO1lBQy9CLE9BQU8sSUFBSSxDQUFDO1FBQ2QsQ0FBQztRQUNELE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxFQUFFLFFBQVEsRUFBRSxRQUFRLENBQUMsQ0FBQztRQUM3RCxPQUFPLENBQUMsT0FBTyxDQUFXLElBQUssQ0FBQyxDQUFDO1FBRWpDLEtBQUssTUFBTSxLQUFLLElBQUksTUFBTSxFQUFFLENBQUM7WUFDM0IsTUFBTSxNQUFNLEdBQUcsS0FBSyxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUMxQyxJQUFJLE1BQU0sSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDO2dCQUNsQyxTQUFTO1lBQ1gsQ0FBQztZQUNELE9BQU8sS0FBSyxDQUFDO1FBQ2YsQ0FBQztRQUNELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVNLGFBQWEsQ0FDbEIsSUFBZSxFQUNmLFFBQXdCLEVBQ3hCLFFBQXlDO1FBRXpDLE9BQU8sSUFBSSw2Q0FBb0IsQ0FDN0IsSUFBSSxFQUNKLFFBQVEsQ0FBQyxXQUFrQixFQUMzQixRQUFRLENBQ1QsQ0FBQztJQUNKLENBQUM7SUFFTSxLQUFLLENBQUMsVUFBVSxDQUNyQixNQUF3RDtRQUV4RCxJQUFJLE1BQU0sWUFBWSxpQkFBVSxFQUFFLENBQUM7WUFDakMsT0FBTyxJQUFBLG9CQUFhLEVBQUMsTUFBTSxDQUFDLENBQUM7UUFDL0IsQ0FBQztRQUNELE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7Q0FDRjtBQTVDRCx3Q0E0Q0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBsYXN0VmFsdWVGcm9tLCBPYnNlcnZhYmxlIH0gZnJvbSBcInJ4anNcIjtcbmltcG9ydCB7IEV4ZWN1dGlvbkNvbnRleHRIb3N0IH0gZnJvbSBcIi4uLy4uL2hlbHBlcnMvZXhlY3V0aW9uLWNvbnRleHQtaG9zdFwiO1xuaW1wb3J0IHsgQ29udGV4dFR5cGUsIENvbnRyb2xsZXJUeXBlIH0gZnJvbSBcIi4uLy4uL3R5cGVzXCI7XG5pbXBvcnQgeyBpc0VtcHR5IH0gZnJvbSBcIi4uLy4uL3V0aWxzL3NoYXJlZC51dGlsc1wiO1xuaW1wb3J0IHsgQ2FuQWN0aXZhdGUgfSBmcm9tIFwiLi4vLi4vY29udHJhY3RzL2Nhbi1hY3RpdmF0ZVwiO1xuXG5leHBvcnQgY2xhc3MgR3VhcmRzQ29uc3VtZXIge1xuICBwdWJsaWMgYXN5bmMgdHJ5QWN0aXZhdGU8VENvbnRleHQgZXh0ZW5kcyBzdHJpbmcgPSBDb250ZXh0VHlwZT4oXG4gICAgZ3VhcmRzOiBDYW5BY3RpdmF0ZVtdLFxuICAgIGFyZ3M6IHVua25vd25bXSxcbiAgICBpbnN0YW5jZTogQ29udHJvbGxlclR5cGUsXG4gICAgY2FsbGJhY2s6ICguLi5hcmdzOiB1bmtub3duW10pID0+IHVua25vd24sXG4gICAgdHlwZT86IFRDb250ZXh0LFxuICApOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICBpZiAoIWd1YXJkcyB8fCBpc0VtcHR5KGd1YXJkcykpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5jcmVhdGVDb250ZXh0KGFyZ3MsIGluc3RhbmNlLCBjYWxsYmFjayk7XG4gICAgY29udGV4dC5zZXRUeXBlPFRDb250ZXh0Pih0eXBlISk7XG5cbiAgICBmb3IgKGNvbnN0IGd1YXJkIG9mIGd1YXJkcykge1xuICAgICAgY29uc3QgcmVzdWx0ID0gZ3VhcmQuY2FuQWN0aXZhdGUoY29udGV4dCk7XG4gICAgICBpZiAoYXdhaXQgdGhpcy5waWNrUmVzdWx0KHJlc3VsdCkpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgcHVibGljIGNyZWF0ZUNvbnRleHQoXG4gICAgYXJnczogdW5rbm93bltdLFxuICAgIGluc3RhbmNlOiBDb250cm9sbGVyVHlwZSxcbiAgICBjYWxsYmFjazogKC4uLmFyZ3M6IHVua25vd25bXSkgPT4gdW5rbm93bixcbiAgKTogRXhlY3V0aW9uQ29udGV4dEhvc3Qge1xuICAgIHJldHVybiBuZXcgRXhlY3V0aW9uQ29udGV4dEhvc3QoXG4gICAgICBhcmdzLFxuICAgICAgaW5zdGFuY2UuY29uc3RydWN0b3IgYXMgYW55LFxuICAgICAgY2FsbGJhY2ssXG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBwaWNrUmVzdWx0KFxuICAgIHJlc3VsdDogYm9vbGVhbiB8IFByb21pc2U8Ym9vbGVhbj4gfCBPYnNlcnZhYmxlPGJvb2xlYW4+LFxuICApOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICBpZiAocmVzdWx0IGluc3RhbmNlb2YgT2JzZXJ2YWJsZSkge1xuICAgICAgcmV0dXJuIGxhc3RWYWx1ZUZyb20ocmVzdWx0KTtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxufVxuIl19