@midware/mauth
Version:
A simple auth middleware for Node.js
56 lines • 2.18 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
// file deepcode ignore no-any: any needed for type inference
const flexiblepersistence_1 = require("flexiblepersistence");
const unauthorizedError_1 = __importDefault(require("./util/unauthorizedError"));
class Permission {
getInstanceName() {
return process.env.INSTANCE || 'auth';
}
getServiceName() {
return process.env.SERVICE_NAME || 'AUTH';
}
// eslint-disable-next-line @typescript-eslint/no-empty-function
constructor() { }
static getInstance() {
if (!this._instance) {
this._instance = new this();
}
return this._instance;
}
formatPermissions(instancePermissions) {
for (const key in instancePermissions) {
if (Object.hasOwnProperty.call(instancePermissions, key)) {
instancePermissions[key.toLowerCase()] = instancePermissions[key];
}
}
return instancePermissions;
}
permission(event, permissions) {
return new Promise(async (resolve, reject) => {
try {
const instanceName = this.getInstanceName();
const instance = this.formatPermissions(permissions['all'] || permissions[instanceName]);
if (instance) {
const service = instance['all'] || instance[event?.name?.toLowerCase?.()];
if (service) {
const operationName = flexiblepersistence_1.Operation[event.operation];
const operation = service.includes('all') || service.includes(operationName);
if (operation)
resolve(true);
}
}
const error = new unauthorizedError_1.default();
reject(error);
}
catch (error) {
reject(error);
}
});
}
}
exports.default = Permission;
//# sourceMappingURL=permission.js.map