UNPKG

lakutata

Version:

An IoC-based universal application framework.

235 lines (154 loc) 6.56 kB
/* Build Date: Mon Jan 05 2026 23:52:23 GMT+0800 (China Standard Time) */ import { _ as t, a as e } from "../../../../vendor/Package.internal.3.mjs"; import { C as o, B as i } from "../../../../vendor/Package.internal.4.mjs"; import { Configurable as r } from "../../../decorators/di/Configurable.mjs"; import { AccessDenyException as s } from "../exceptions/AccessDenyException.mjs"; import { AccessControlRule as n } from "./AccessControlRule.mjs"; import { D as a } from "../../../../vendor/Package.internal.7.mjs"; import { As as c } from "../../../lib/helpers/As.mjs"; import "../../../lib/base/async-constructor/AsyncConstructor.mjs"; import "../../../lib/base/async-constructor/Append.mjs"; import "../../../lib/helpers/IsPromiseLike.mjs"; import "../../../lib/helpers/IsPromise.mjs"; import "util/types"; import "../../../decorators/di/Lifetime.mjs"; import "../../../lib/base/internal/ObjectLifetime.mjs"; import "../../../constants/DIMetadataKey.mjs"; import "../../../../vendor/Package.internal.1.mjs"; import "../../../../vendor/Package.internal.2.mjs"; import "../../../exceptions/di/LifetimeLockedException.mjs"; import "../../../lib/base/abstracts/Exception.mjs"; import "../../../../vendor/Package.internal.5.mjs"; import "../../../../vendor/Package.internal.6.mjs"; import "../../../lib/base/internal/ThrowWarning.mjs"; import "../../../lib/helpers/Templating.mjs"; import "../../../lib/base/internal/CamelCase.mjs"; import "../../../lib/helpers/NoCase.mjs"; import "../../../lib/helpers/DevNull.mjs"; import "../../../exceptions/MethodNotFoundException.mjs"; import "../../../lib/ioc/DependencyInjectionContainer.mjs"; import "util"; import "../../../lib/ioc/Errors.mjs"; import "../../../exceptions/di/DependencyInjectionException.mjs"; import "../../../lib/base/internal/ConstructorSymbol.mjs"; import "node:crypto"; import "../../../lib/base/internal/DataValidator.mjs"; import "node:util/types"; import "../../../lib/validation/VLD.mjs"; import "url"; import "../../../exceptions/dto/InvalidValueException.mjs"; import "../../../../vendor/Package.internal.8.mjs"; import "../../../lib/helpers/IsHtml.mjs"; import "../../../lib/helpers/IsXML.mjs"; import "../../../constants/DTOMetadataKey.mjs"; import "../../../lib/helpers/ObjectConstructor.mjs"; import "../../../lib/helpers/ObjectParentConstructors.mjs"; import "../../../lib/helpers/ObjectParentConstructor.mjs"; import "../../../lib/helpers/ObjectPrototype.mjs"; import "../../../lib/ioc/InjectionMode.mjs"; import "../../../lib/ioc/Lifetime.mjs"; import "../../../lib/ioc/ListModules.mjs"; import "os"; import "path"; import "stream"; import "events"; import "fs"; import "../../../lib/ioc/Utils.mjs"; import "../../../lib/ioc/FunctionTokenizer.mjs"; import "../../../lib/ioc/LoadModules.mjs"; import "../../../lib/ioc/Resolvers.mjs"; import "../../../lib/ioc/ParamParser.mjs"; import "../../../lib/base/internal/ObjectWeakRefs.mjs"; import "../../../lib/base/internal/ConfigurableRecordsInjection.mjs"; import "../../../lib/base/internal/ObjectConfiguration.mjs"; import "../../../lib/base/internal/ObjectInjection.mjs"; import "../../../lib/base/internal/ObjectContainer.mjs"; import "../../../decorators/dto/Expect.mjs"; import "../../../decorators/dto/IndexSignature.mjs"; import "../../../decorators/dto/Accept.mjs"; import "../../../lib/base/internal/MethodValidation.mjs"; import "../../../exceptions/dto/InvalidMethodAcceptException.mjs"; import "../../../exceptions/dto/InvalidMethodReturnException.mjs"; import "../../../lib/helpers/IsEmptyObject.mjs"; class AccessControl extends i { constructor() { super(...arguments); this.accessControlRuleConstructorDTO = a.Class(n); } async init() { try { const t = await this.match(); if (t) return this.allowCallback(); return this.denyCallback(); } catch (t) { return this.denyCallback(t); } } async match() { for (const t of this.rules) { if (a.isValid(t, this.accessControlRuleConstructorDTO)) { const e = c(t); const o = await this.runtimeContainer.build(e, { actions: this.actions, targetAction: this.target, context: this.context, input: this.input }); if (!o.supportContextTypes.includes(this.context.type)) continue; if (!await o.rule()) return false; } else { const e = c(t); if (!await e(this.context, this.input)) return false; } } return true; } static async run(t, e, o, i, r, n) { const a = n(o.type); let c = !r.acl; let l = new s; if (!c) { await e.set(this, { rules: [ ...t, r.rule ].filter(t => !!t), runtimeContainer: e, actions: a, context: o, input: i, target: r.getActionInfo(), allowCallback: () => { c = true; }, denyCallback: t => { c = false; l = t ? t : l; } }); } else if (r.rule) { await e.set(this, { rules: [ r.rule ], runtimeContainer: e, actions: a, context: o, input: i, target: r.getActionInfo(), allowCallback: () => { c = true; }, denyCallback: t => { c = false; l = t ? t : l; } }); } return [ c, l ]; } } t([ r(), e("design:type", o) ], AccessControl.prototype, "runtimeContainer", void 0); t([ r(), e("design:type", Array) ], AccessControl.prototype, "actions", void 0); t([ r(), e("design:type", Object) ], AccessControl.prototype, "target", void 0); t([ r(), e("design:type", Object) ], AccessControl.prototype, "context", void 0); t([ r(), e("design:type", Object) ], AccessControl.prototype, "input", void 0); t([ r(), e("design:type", Function) ], AccessControl.prototype, "allowCallback", void 0); t([ r(), e("design:type", Function) ], AccessControl.prototype, "denyCallback", void 0); t([ r(), e("design:type", Array) ], AccessControl.prototype, "rules", void 0); export { AccessControl };