diff --git a/app/Livewire/Datatable/Studio/Catalog/BottlesTable.php b/app/Livewire/Datatable/Studio/Catalog/BottlesTable.php
index 2a17f19..910bc65 100644
--- a/app/Livewire/Datatable/Studio/Catalog/BottlesTable.php
+++ b/app/Livewire/Datatable/Studio/Catalog/BottlesTable.php
@@ -90,13 +90,18 @@ public function columns(): array
)
->outputFormat(function ($index, $value) {
$route = route('studio.catalog.bottle.audit', [$value['id'], $value['bottle_id']]);
+ $canAudit = auth()->user()->can('audit bottle');
- return Blade::render('
-
- {{ $value["name"] }}
- {{ $value["stock"] }}
- ', [
+ $tag = $canAudit ? 'div' : 'a';
+ $attrs = $canAudit ? '' : 'href="'.$route.'" wire:navigate';
+
+ return Blade::render("
+ <{$tag} {$attrs}
+ class='flex items-center space-x-2 bg-gray-50 border border-gray-200 rounded-lg px-2 py-1 text-xs hover:bg-gray-100 transition'>
+ {{ \$value['name'] }}
+ {{ \$value['stock'] }}
+ {$tag}>
+ ", [
'value' => $value,
'route' => $route,
]);
diff --git a/app/Livewire/Datatable/Studio/Catalog/PerfumesTable.php b/app/Livewire/Datatable/Studio/Catalog/PerfumesTable.php
index bd71733..9fa898d 100644
--- a/app/Livewire/Datatable/Studio/Catalog/PerfumesTable.php
+++ b/app/Livewire/Datatable/Studio/Catalog/PerfumesTable.php
@@ -93,13 +93,18 @@ public function columns(): array
)
->outputFormat(function ($index, $value) {
$route = route('studio.catalog.perfume.audit', [$value['id'], $value['perfume_id']]);
+ $canAudit = auth()->user()->can('audit perfume');
- return Blade::render('
-
- {{ $value["name"] }}
- {{ $value["stock"] }}
- ', [
+ $tag = $canAudit ? 'div' : 'a';
+ $attrs = $canAudit ? '' : 'href="'.$route.'" wire:navigate';
+
+ return Blade::render("
+ <{$tag} {$attrs}
+ class='flex items-center space-x-2 bg-gray-50 border border-gray-200 rounded-lg px-2 py-1 text-xs hover:bg-gray-100 transition'>
+ {{ \$value['name'] }}
+ {{ \$value['stock'] }}
+ {$tag}>
+ ", [
'value' => $value,
'route' => $route,
]);
@@ -126,7 +131,8 @@ class="flex items-center space-x-2 bg-gray-50 border border-gray-200 rounded-lg
return $actions;
})
- ->html(),
+ ->html()
+ ->hideIf(auth()->user()->cannot('update perfume', 'delete perfume')),
];
}
diff --git a/app/Livewire/Datatable/Studio/Catalog/ProductsTable.php b/app/Livewire/Datatable/Studio/Catalog/ProductsTable.php
index 22e7778..70bba00 100644
--- a/app/Livewire/Datatable/Studio/Catalog/ProductsTable.php
+++ b/app/Livewire/Datatable/Studio/Catalog/ProductsTable.php
@@ -82,13 +82,18 @@ public function columns(): array
)
->outputFormat(function ($index, $value) {
$route = route('studio.catalog.product.audit', [$value['id'], $value['product_id']]);
+ $canAudit = auth()->user()->can('audit product');
- return Blade::render('
-
- {{ $value["name"] }}
- {{ $value["stock"] }}
- ', [
+ $tag = $canAudit ? 'div' : 'a';
+ $attrs = $canAudit ? '' : 'href="'.$route.'" wire:navigate';
+
+ return Blade::render("
+ <{$tag} {$attrs}
+ class='flex items-center space-x-2 bg-gray-50 border border-gray-200 rounded-lg px-2 py-1 text-xs hover:bg-gray-100 transition'>
+ {{ \$value['name'] }}
+ {{ \$value['stock'] }}
+ {$tag}>
+ ", [
'value' => $value,
'route' => $route,
]);
diff --git a/database/seeders/RolePermissionSeeder.php b/database/seeders/RolePermissionSeeder.php
index b19db31..12eda98 100644
--- a/database/seeders/RolePermissionSeeder.php
+++ b/database/seeders/RolePermissionSeeder.php
@@ -215,14 +215,17 @@ public function run(): void
'create perfume',
'update perfume',
'delete perfume',
+ 'audit perfume',
'create product',
'update product',
'delete product',
+ 'audit product',
'create bottle',
'update bottle',
'delete bottle',
+ 'audit bottle',
'view payroll',
'manage adjustment',