Commit c32c7e5a authored by Mahmoud Aglan's avatar Mahmoud Aglan

Register Gate::before to wire PermissionService into Laravel authorization

Livewire components use $this->authorize() which goes through Laravel's
Gate system. Without a Gate callback, super_admin gets 403 because no
policies exist. Gate::before delegates all ability checks to our
PermissionService (which returns true for is_super_admin).
Co-Authored-By: 's avatarClaude Opus 4.6 <noreply@anthropic.com>
parent aeb89998
...@@ -4,6 +4,7 @@ ...@@ -4,6 +4,7 @@
use App\Domain\Identity\Services\PermissionService; use App\Domain\Identity\Services\PermissionService;
use Illuminate\Support\Facades\Blade; use Illuminate\Support\Facades\Blade;
use Illuminate\Support\Facades\Gate;
use Illuminate\Support\ServiceProvider; use Illuminate\Support\ServiceProvider;
class AppServiceProvider extends ServiceProvider class AppServiceProvider extends ServiceProvider
...@@ -21,6 +22,10 @@ public function register(): void ...@@ -21,6 +22,10 @@ public function register(): void
*/ */
public function boot(): void public function boot(): void
{ {
Gate::before(function ($user, $ability) {
return app(PermissionService::class)->can($user, $ability) ?: null;
});
Blade::if('permission', function (string $permission) { Blade::if('permission', function (string $permission) {
$user = auth()->user(); $user = auth()->user();
if (!$user) { if (!$user) {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment