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'] }} + + ", [ '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'] }} + + ", [ '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'] }} + + ", [ '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',