mirror of
https://github.com/directus/directus.git
synced 2026-01-24 20:28:00 -05:00
Add save permissions
This commit is contained in:
@@ -133,6 +133,7 @@
|
||||
</template>
|
||||
|
||||
<v-form
|
||||
:disabled="isNew ? false : updateAllowed === false"
|
||||
:loading="loading"
|
||||
:initial-values="item"
|
||||
:collection="collection"
|
||||
@@ -286,7 +287,7 @@ export default defineComponent({
|
||||
return next();
|
||||
};
|
||||
|
||||
const { deleteAllowed, softDeleteAllowed, saveAllowed } = usePermissions();
|
||||
const { deleteAllowed, softDeleteAllowed, saveAllowed, updateAllowed } = usePermissions();
|
||||
|
||||
return {
|
||||
item,
|
||||
@@ -321,6 +322,7 @@ export default defineComponent({
|
||||
deleteAllowed,
|
||||
saveAllowed,
|
||||
softDeleteAllowed,
|
||||
updateAllowed,
|
||||
};
|
||||
|
||||
function useBreadcrumb() {
|
||||
@@ -385,7 +387,15 @@ export default defineComponent({
|
||||
|
||||
function usePermissions() {
|
||||
const deleteAllowed = computed(() => isAllowed(collection.value, 'delete', item.value));
|
||||
const saveAllowed = computed(() => isAllowed(collection.value, 'update', item.value));
|
||||
const saveAllowed = computed(() => {
|
||||
if (isNew.value) {
|
||||
return true;
|
||||
}
|
||||
|
||||
return isAllowed(collection.value, 'update', item.value);
|
||||
});
|
||||
const updateAllowed = computed(() => isAllowed(collection.value, 'update', item.value));
|
||||
|
||||
const softDeleteAllowed = computed(() => {
|
||||
if (!collectionInfo.value?.meta?.soft_delete_field) return false;
|
||||
|
||||
@@ -394,7 +404,7 @@ export default defineComponent({
|
||||
});
|
||||
});
|
||||
|
||||
return { deleteAllowed, saveAllowed, softDeleteAllowed };
|
||||
return { deleteAllowed, saveAllowed, softDeleteAllowed, updateAllowed };
|
||||
}
|
||||
},
|
||||
});
|
||||
|
||||
@@ -10,7 +10,9 @@ export function isAllowed(collection: string, action: Permission['action'], valu
|
||||
|
||||
const permissions = permissionsStore.state.permissions;
|
||||
|
||||
const permissionInfo = permissions.find((permission) => permission.action === action);
|
||||
const permissionInfo = permissions.find(
|
||||
(permission) => permission.action === action && permission.collection === collection
|
||||
);
|
||||
|
||||
if (!permissionInfo) return false;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user