loopback4-authorization
Version:
ARC authorization extension for loopback-next applications.
39 lines • 2.16 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
exports.getAuthorizeMetadata = exports.AuthorizationMetadataProvider = void 0;
const tslib_1 = require("tslib");
const context_1 = require("@loopback/context");
const core_1 = require("@loopback/core");
const keys_1 = require("../keys");
let AuthorizationMetadataProvider = class AuthorizationMetadataProvider {
constructor(controllerClass, methodName, permissionObject) {
this.controllerClass = controllerClass;
this.methodName = methodName;
this.permissionObject = permissionObject;
}
value() {
if (!this.controllerClass || !this.methodName)
return;
return getAuthorizeMetadata(this.controllerClass, this.methodName, this.permissionObject);
}
};
exports.AuthorizationMetadataProvider = AuthorizationMetadataProvider;
exports.AuthorizationMetadataProvider = AuthorizationMetadataProvider = tslib_1.__decorate([
tslib_1.__param(0, (0, context_1.inject)(core_1.CoreBindings.CONTROLLER_CLASS, { optional: true })),
tslib_1.__param(1, (0, context_1.inject)(core_1.CoreBindings.CONTROLLER_METHOD_NAME, { optional: true })),
tslib_1.__param(2, (0, context_1.inject)(keys_1.AuthorizationBindings.PERMISSION)),
tslib_1.__metadata("design:paramtypes", [Object, String, Object])
], AuthorizationMetadataProvider);
function getAuthorizeMetadata(controllerClass, methodName, userPermission) {
var _a, _b;
const authorizationMetadata = (_a = context_1.MetadataInspector.getMethodMetadata(keys_1.AUTHORIZATION_METADATA_ACCESSOR, controllerClass.prototype, methodName)) !== null && _a !== void 0 ? _a : { permissions: [] };
if (userPermission) {
const methodPermissions = (_b = userPermission === null || userPermission === void 0 ? void 0 : userPermission[controllerClass.name]) === null || _b === void 0 ? void 0 : _b[methodName];
if (methodPermissions) {
authorizationMetadata.permissions = methodPermissions;
}
}
return authorizationMetadata;
}
exports.getAuthorizeMetadata = getAuthorizeMetadata;
//# sourceMappingURL=authorization-metadata.provider.js.map
;