"Add canEditBooking function to enhance permission checks in OrderBookingsTable.vue; update editable fields and actions to respect booking edit permissions."

This commit is contained in:
Jeppe Bundgaard
2025-11-11 10:13:29 +01:00
parent 723a3447d2
commit f1233a8830
@@ -175,6 +175,14 @@ const onItemsClick = (event, booking) => {
showPopper(popperBox('Ydelser', content), event.currentTarget || event.target);
};
const canEditBooking = (bookingobj) => {
// Admins can always edit
if (SessionUser.canAccessAdmin() && SessionUser.hasPermission('edit_bookings')) return true;
console.warn(bookingobj);
if (!!bookingobj.order_id) return false; // Only allow editing bookings without an order
if (SessionUser.hasPermission('edit_own_bookings')) return true;
}
</script>
<template>
@@ -254,7 +262,7 @@ const onItemsClick = (event, booking) => {
column="datetime"
:parse-function="(value) => value ? `${value}` : 'Ingen dato valgt'"
:edit-function="SessionUser.objects.order_bookings.showEditObjectFieldForm"
:permissionCheckFunction="(bookingobj) => true"
:permissionCheckFunction="(bookingobj) => canEditBooking(booking)"
/>
<!-- Vehicles -->
<td>
@@ -266,7 +274,7 @@ const onItemsClick = (event, booking) => {
column="reg_1"
:parse-function="(value) => value || 'Ingen registreret'"
:edit-function="SessionUser.objects.order_bookings.showEditObjectFieldForm"
:permissionCheckFunction="(bookingobj) => true"
:permissionCheckFunction="(bookingobj) => canEditBooking(booking)"
/>
</p>
<p>
@@ -277,7 +285,7 @@ const onItemsClick = (event, booking) => {
column="reg_2"
:parse-function="(value) => value || '-'"
:edit-function="SessionUser.objects.order_bookings.showEditObjectFieldForm"
:permissionCheckFunction="(bookingobj) => true"
:permissionCheckFunction="(bookingobj) => canEditBooking(booking)"
/>
</p>
</td>
@@ -288,7 +296,7 @@ const onItemsClick = (event, booking) => {
column="department"
:parse-function="(value) => getDepartmentName(parseInt(booking.department))"
:edit-function="SessionUser.objects.order_bookings.showEditObjectFieldForm"
:permissionCheckFunction="(bookingobj) => true"
:permissionCheckFunction="(bookingobj) => canEditBooking(booking)"
/>
<!-- PO -->
<EditableTableColumn
@@ -297,7 +305,7 @@ const onItemsClick = (event, booking) => {
column="po"
:parse-function="(value) => value || '-'"
:edit-function="SessionUser.objects.order_bookings.showEditObjectFieldForm"
:permissionCheckFunction="(bookingobj) => true"
:permissionCheckFunction="(bookingobj) => canEditBooking(booking)"
/>
<!-- Reference -->
<EditableTableColumn
@@ -306,14 +314,14 @@ const onItemsClick = (event, booking) => {
column="reference"
:parse-function="(value) => value || '-'"
:edit-function="SessionUser.objects.order_bookings.showEditObjectFieldForm"
:permissionCheckFunction="(bookingobj) => true"
:permissionCheckFunction="(bookingobj) => canEditBooking(booking)"
/>
<!-- Pickup -->
<EditableTableColumn
:object="booking"
:loadList="loadList"
column="pickup"
:permissionCheckFunction="(bookingobj) => true"
:permissionCheckFunction="(bookingobj) => canEditBooking(booking)"
:parse-function="(value) => value ? 'Ja' : 'Nej'"
:edit-function="SessionUser.objects.order_bookings.showEditObjectFieldForm"
/>
@@ -335,6 +343,7 @@ const onItemsClick = (event, booking) => {
class="button is-small is-transparent is-text"
style="text-decoration-line: none;"
@click.stop="SessionUser.objects.order_bookings.showEditObjectFieldForm(booking.id, 'items', booking.items, loadList)"
v-if="canEditBooking(booking)"
>
<span class="icon">
<i class="fas fa-edit"></i>