UNPKG

@rytass/member-base-nestjs-module

Version:

Rytass Member System NestJS Base Module

27 lines (24 loc) 916 B
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 };