Files
directus/app/src/utils/is-allowed.ts
2020-11-04 12:22:20 -05:00

28 lines
805 B
TypeScript

import { usePermissionsStore, useUserStore } from '@/stores';
import { Permission } from '@/types';
import generateJoi from '@/utils/generate-joi';
export function isAllowed(collection: string, action: Permission['action'], value: Record<string, any> | null) {
const permissionsStore = usePermissionsStore();
const userStore = useUserStore();
if (userStore.isAdmin.value === true) return true;
const permissions = permissionsStore.state.permissions;
const permissionInfo = permissions.find(
(permission) => permission.action === action && permission.collection === collection
);
if (!permissionInfo) return false;
const schema = generateJoi(permissionInfo.permissions, { allowUnknown: true });
const { error } = schema.validate(value);
if (!error) {
return true;
}
return false;
}