"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:
@@ -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>
|
||||
|
||||
Reference in New Issue
Block a user