@rytass/member-base-nestjs-module
Version:
Rytass Member System NestJS Base Module
27 lines (24 loc) • 916 B
JavaScript
import { createParamDecorator } from '@nestjs/common';
import { getRequestFromContext } from '../utils/get-request-from-context.js';
import { normalizeCasbinDecision } from '../utils/normalize-casbin-decision.js';
const HasPermission = createParamDecorator(([object, action], context)=>{
const request = getRequestFromContext(context);
if (!request.payload || !request.enforcer || !request.casbinPermissionChecker) return false;
const result = request.casbinPermissionChecker({
enforcer: request.enforcer,
payload: request.payload,
actions: [
[
object,
action
]
],
context,
request
});
if (result instanceof Promise) {
return result.then((resolved)=>normalizeCasbinDecision(resolved).allowed);
}
return normalizeCasbinDecision(result).allowed;
});
export { HasPermission };