From 0d9c8c8b30ce6de3109a7f8e5a164ab534e734b9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Simon=20Pocrnji=C4=8D?= Date: Fri, 31 Oct 2025 12:26:58 +0100 Subject: [PATCH] Other permissions changed --- resources/js/Components/DocumentsTable.vue | 3 + .../Cases/Partials/CaseObjectsDialog.vue | 3 +- .../js/Pages/Cases/Partials/ContractTable.vue | 256 ++++++++++-------- .../Pages/Cases/Partials/PaymentsDialog.vue | 3 +- .../Cases/Partials/ViewPaymentsDialog.vue | 30 +- resources/js/Pages/Cases/Show.vue | 3 + routes/web.php | 15 +- 7 files changed, 180 insertions(+), 133 deletions(-) diff --git a/resources/js/Components/DocumentsTable.vue b/resources/js/Components/DocumentsTable.vue index c250c8e..33e1740 100644 --- a/resources/js/Components/DocumentsTable.vue +++ b/resources/js/Components/DocumentsTable.vue @@ -35,6 +35,7 @@ const props = defineProps({ downloadUrlBuilder: { type: Function, default: null }, // Optional: direct delete URL builder; if absent we emit 'delete' deleteUrlBuilder: { type: Function, default: null }, + edit: { type: Boolean, default: false }, }); // Derive a human-friendly source for a document: Case or Contract reference const sourceLabel = (doc) => { @@ -322,6 +323,7 @@ function closeActions() { type="button" class="w-full px-3 py-2 text-left text-sm text-gray-700 hover:bg-gray-50 flex items-center gap-2" @click="emit('edit', doc)" + v-if="edit" > Uredi @@ -338,6 +340,7 @@ function closeActions() { type="button" class="w-full px-3 py-2 text-left text-sm text-red-600 hover:bg-red-50 flex items-center gap-2" @click="askDelete(doc)" + v-if="edit" > Izbriši diff --git a/resources/js/Pages/Cases/Partials/CaseObjectsDialog.vue b/resources/js/Pages/Cases/Partials/CaseObjectsDialog.vue index a2236c8..32ea9cb 100644 --- a/resources/js/Pages/Cases/Partials/CaseObjectsDialog.vue +++ b/resources/js/Pages/Cases/Partials/CaseObjectsDialog.vue @@ -12,6 +12,7 @@ const props = defineProps({ show: { type: Boolean, default: false }, client_case: { type: Object, required: true }, contract: { type: Object, default: null }, + edit: { type: Boolean, default: true }, }); const emit = defineEmits(["close"]); @@ -79,7 +80,7 @@ const deleteObject = (o) => {
Ref.
{{ o.reference || "-" }}
-
+
{{ o.type || "—" }} [] }, templates: { type: Array, default: () => [] }, // active document templates (latest per slug) edit: { type: Boolean, default: () => false }, + createDoc: { type: Boolean, default: () => false }, }); // Debug: log incoming contract balances (remove after fix) @@ -485,7 +486,7 @@ const closePaymentsDialog = () => { > Opis - + \ No newline at end of file + diff --git a/resources/js/Pages/Cases/Show.vue b/resources/js/Pages/Cases/Show.vue index 1344cce..9de273c 100644 --- a/resources/js/Pages/Cases/Show.vue +++ b/resources/js/Pages/Cases/Show.vue @@ -324,6 +324,7 @@ const submitAttachSegment = () => { :segments="segments" :templates="contract_doc_templates" :edit="hasPerm('contract-edit')" + :create-doc="hasPerm('create-docs')" @edit="openDrawerEditContract" @delete="requestDeleteContract" @add-activity="openDrawerAddActivity" @@ -371,6 +372,7 @@ const submitAttachSegment = () => {
name('contracts.generate-document'); + Route::post('contracts/{contract:uuid}/generate-document', \App\Http\Controllers\ContractDocumentGenerationController::class)->name('contracts.generate-document')->middleware("permission:create-docs"); // Phone page Route::get('phone', [PhoneViewController::class, 'index'])->name('phone.index'); @@ -337,13 +337,16 @@ Route::post('client-cases/{client_case:uuid}/segments', [ClientCaseContoller::class, 'attachSegment'])->name('clientCase.segments.attach'); // client-case / documents Route::post('client-cases/{client_case:uuid}/documents', [ClientCaseContoller::class, 'storeDocument'])->name('clientCase.document.store'); - Route::patch('client-cases/{client_case:uuid}/documents/{document:uuid}', [ClientCaseContoller::class, 'updateDocument']) - ->withoutScopedBindings() - ->name('clientCase.document.update'); + Route::get('client-cases/{client_case:uuid}/documents/{document:uuid}/view', [ClientCaseContoller::class, 'viewDocument'])->name('clientCase.document.view'); Route::get('client-cases/{client_case:uuid}/documents/{document:uuid}/download', [ClientCaseContoller::class, 'downloadDocument'])->name('clientCase.document.download'); - Route::delete('client-cases/{client_case:uuid}/documents/{document:uuid}', [ClientCaseContoller::class, 'deleteDocument'])->name('clientCase.document.delete'); - // client-case / person phone - send SMS + Route::middleware("permission:doc-edit")->group( function() { + Route::patch('client-cases/{client_case:uuid}/documents/{document:uuid}', [ClientCaseContoller::class, 'updateDocument']) + ->withoutScopedBindings() + ->name('clientCase.document.update'); + Route::delete('client-cases/{client_case:uuid}/documents/{document:uuid}', [ClientCaseContoller::class, 'deleteDocument'])->name('clientCase.document.delete'); + }); + // client-case / person phone - send SMS Route::post('client-cases/{client_case:uuid}/phone/{phone_id}/sms', [ClientCaseContoller::class, 'sendSmsToPhone'])->name('clientCase.phone.sms'); // client-case / contracts list for SMS dialog Route::get('client-cases/{client_case:uuid}/contracts/list', [ClientCaseContoller::class, 'listContracts'])->name('clientCase.contracts.list');