Files
n8n-enterprise-unlocked/packages/editor-ui/src/rbac/middleware/rbac.ts
Alex Grozav 67a88914f2 feat(editor): Add routing middleware, permission checks, RBAC store, RBAC component (#7702)
Github issue / Community forum post (link here to close automatically):

---------

Co-authored-by: Csaba Tuncsik <csaba@n8n.io>
2023-11-23 13:22:47 +02:00

26 lines
764 B
TypeScript

import type { RouterMiddleware } from '@/types/router';
import { VIEWS } from '@/constants';
import {
inferProjectIdFromRoute,
inferResourceIdFromRoute,
inferResourceTypeFromRoute,
} from '@/utils/rbacUtils';
import type { RBACPermissionOptions } from '@/types/rbac';
import { hasScope } from '@/rbac/checks';
export const rbacMiddleware: RouterMiddleware<RBACPermissionOptions> = async (
to,
from,
next,
{ scope, options },
) => {
const projectId = inferProjectIdFromRoute(to);
const resourceType = inferResourceTypeFromRoute(to);
const resourceId = resourceType ? inferResourceIdFromRoute(to) : undefined;
const valid = hasScope({ scope, projectId, resourceType, resourceId, options });
if (!valid) {
return next({ name: VIEWS.HOMEPAGE });
}
};