lynx-admin-ui
Version:
this module adds annotations for entities in order to automatically generate an Administration UI
46 lines (39 loc) • 1.26 kB
text/typescript
import { BaseMiddleware, BLOCK_CHAIN } from 'lynx-framework/base.middleware';
import { Middleware } from 'lynx-framework/decorators';
import { Request, Response } from 'express';
import AdminUIModule from '..';
/**
*
* @param url
* @returns name of enitity
*/
function getEntityName(url: string): string {
const regex = /(adminUI\/)(ajaxRequest\/|ajaxDetails\/)?(\w*)/;
const match = url.match(regex);
if (null === match) {
return 'unknown';
}
return match[3];
}
('/adminUI/*')
export default class PermissionMiddleware extends BaseMiddleware {
async apply(req: Request, res: Response) {
const entityName = getEntityName(req.originalUrl);
const method = req.method;
let canAccess;
switch (method) {
case 'GET':
canAccess = AdminUIModule.canReadFunction(req, entityName);
break;
case 'POST':
canAccess = AdminUIModule.canWriteFunction(req, entityName);
break;
default:
canAccess = false;
}
if (false === canAccess) {
AdminUIModule.permissionDeniedHandler(req, res, entityName);
return BLOCK_CHAIN;
}
}
}