fix(portal) : allow admin to edit tickets and enable document deletion

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-03-15 21:12:55 +01:00
parent 49cd971e3e
commit 4e3e854aa2

View File

@@ -156,8 +156,9 @@
<TaskDocumentList
v-if="localDocuments.length"
:documents="localDocuments"
:is-admin="false"
:is-admin="canEdit"
@preview="openPreview"
@delete="handleDeleteDocument"
/>
<!-- Document preview -->
@@ -216,7 +217,7 @@ function close() {
}
const auth = useAuthStore()
const { getByTicket } = useTaskDocumentService()
const { getByTicket, remove: removeDocument } = useTaskDocumentService()
const clientTicketService = useClientTicketService()
const { typeBadgeClass, statusBadgeClass, formatDate } = useClientTicketHelpers()
@@ -229,11 +230,13 @@ const editForm = reactive({
url: '',
})
const isAdmin = computed(() => auth.user?.roles?.includes('ROLE_ADMIN') ?? false)
const canEdit = computed(() => {
if (!props.ticket) return false
if (isAdmin.value) return true
const status = props.ticket.status
if (status === 'done' || status === 'rejected') return false
// Check if current user submitted the ticket
const userId = auth.user?.id
if (!userId) return false
const submittedByIri = props.ticket.submittedBy
@@ -277,6 +280,11 @@ watch(() => props.ticket?.id, () => {
isEditing.value = false
})
async function handleDeleteDocument(doc: TaskDocument) {
await removeDocument(doc.id)
await refreshDocuments()
}
async function refreshDocuments() {
if (!props.ticket) return
localDocuments.value = await getByTicket(props.ticket.id)