diff --git a/app/src/modules/collections/routes/detail/detail.vue b/app/src/modules/collections/routes/detail/detail.vue index ae1a3e0344..c068eba0b8 100644 --- a/app/src/modules/collections/routes/detail/detail.vue +++ b/app/src/modules/collections/routes/detail/detail.vue @@ -133,6 +133,7 @@ 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 }; } }, }); diff --git a/app/src/utils/is-allowed.ts b/app/src/utils/is-allowed.ts index bae657bab7..904b10c379 100644 --- a/app/src/utils/is-allowed.ts +++ b/app/src/utils/is-allowed.ts @@ -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;