Skip to content

Commit

Permalink
Fall back on general user permissions on global model tables
Browse files Browse the repository at this point in the history
If the authenticated user has the permission in at lease a single
folder, they will be able to create an object from its global model
table, the domain choices in the create form will already be filtered
only top include those they have access to.
  • Loading branch information
nas-tabchiche committed Mar 5, 2025
1 parent 7828db1 commit afcd641
Show file tree
Hide file tree
Showing 3 changed files with 35 additions and 29 deletions.
22 changes: 12 additions & 10 deletions frontend/src/lib/components/ModelTable/ModelTable.svelte
Original file line number Diff line number Diff line change
Expand Up @@ -201,16 +201,18 @@
$: field_component_map = FIELD_COMPONENT_MAP[URLModel] ?? {};
$: model = URL_MODEL_MAP[URLModel];
$: canCreateObject = model
? canPerformAction({
user,
action: 'add',
model: model.name,
domain:
$page.data?.data?.folder?.id ||
$page.data?.data?.folder ||
$page.params.id ||
user.root_folder_id
})
? $page.params.id
? canPerformAction({
user,
action: 'add',
model: model.name,
domain:
$page.data?.data?.folder?.id ||
$page.data?.data?.folder ||
$page.params.id ||
user.root_folder_id
})
: Object.hasOwn(user.permissions, `add_${model.name}`)
: false;
$: filterCount = filteredFields.reduce((acc, field) => acc + filterValues[field].length, 0);
Expand Down
40 changes: 22 additions & 18 deletions frontend/src/lib/components/TableRowActions/TableRowActions.svelte
Original file line number Diff line number Diff line change
Expand Up @@ -97,26 +97,30 @@
const user = $page.data.user;
$: canDeleteObject = model
? canPerformAction({
user,
action: 'delete',
model: model.name,
domain:
model.name === 'folder'
? row.meta.id
: (row.meta.folder?.id ?? row.meta.folder ?? user.root_folder_id)
}) && !preventDelete
? $page.params.id
? canPerformAction({
user,
action: 'delete',
model: model.name,
domain:
model.name === 'folder'
? row.meta.id
: (row.meta.folder?.id ?? row.meta.folder ?? user.root_folder_id)
}) && !preventDelete
: Object.hasOwn(user.permissions, `delete_${model.name}`)
: false;
$: canEditObject = model
? canPerformAction({
user,
action: 'change',
model: model.name,
domain:
model.name === 'folder'
? row.meta.id
: (row.meta.folder?.id ?? row.meta.folder ?? user.root_folder_id)
})
? $page.params.id
? canPerformAction({
user,
action: 'change',
model: model.name,
domain:
model.name === 'folder'
? row.meta.id
: (row.meta.folder?.id ?? row.meta.folder ?? user.root_folder_id)
})
: Object.hasOwn(user.permissions, `change_${model.name}`)
: false;
$: displayDetail = detailURL;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@
const user = $page.data.user;
const canEditObject: boolean = canPerformAction({
user,
action: 'delete',
action: 'change',
model: 'user',
domain: user.root_folder_id
});
Expand Down

0 comments on commit afcd641

Please sign in to comment.