From fe7a7e5970f64f5b0f33c7d0e7fb4fb9406462a8 Mon Sep 17 00:00:00 2001 From: sundayenglish Date: Fri, 20 Jun 2025 16:57:06 +0700 Subject: [PATCH] Added Feature Permission --- .../Renderers/PermissionExceptionRenderer.php | 18 ++++++++++++++++++ bootstrap/app.php | 18 +++++++++++------- 2 files changed, 29 insertions(+), 7 deletions(-) create mode 100644 app/Exceptions/Renderers/PermissionExceptionRenderer.php diff --git a/app/Exceptions/Renderers/PermissionExceptionRenderer.php b/app/Exceptions/Renderers/PermissionExceptionRenderer.php new file mode 100644 index 0000000..84d35f0 --- /dev/null +++ b/app/Exceptions/Renderers/PermissionExceptionRenderer.php @@ -0,0 +1,18 @@ +json([ + 'message' => 'Bạn không có quyền truy cập.', + 'required' => $e->getRequiredRoles() ?? $e->getRequiredPermissions(), + ], 403); + } +} diff --git a/bootstrap/app.php b/bootstrap/app.php index 52d0809..a394865 100644 --- a/bootstrap/app.php +++ b/bootstrap/app.php @@ -3,23 +3,27 @@ use Illuminate\Foundation\Application; use Illuminate\Foundation\Configuration\Exceptions; use Illuminate\Foundation\Configuration\Middleware; +use App\Exceptions\Renderers\PermissionExceptionRenderer; +use Spatie\Permission\Exceptions\UnauthorizedException; return Application::configure(basePath: dirname(__DIR__)) ->withRouting( - web: __DIR__.'/../routes/web.php', - api: __DIR__.'/../routes/api.php', - commands: __DIR__.'/../routes/console.php', + web: __DIR__ . '/../routes/web.php', + api: __DIR__ . '/../routes/api.php', + commands: __DIR__ . '/../routes/console.php', health: '/up', ) ->withMiddleware(function (Middleware $middleware): void { - // + // Đăng ký middleware nếu cần }) ->withExceptions(function (Exceptions $exceptions): void { - // + // Custom render UnauthorizedException from Spatie + $exceptions->renderable(function (UnauthorizedException $e, $request) { + return (new \App\Exceptions\Renderers\PermissionExceptionRenderer)($e, $request); + }); }) ->withProviders([ App\Providers\AuthServiceProvider::class, - App\Providers\MiddlewareServiceProvider::class, // + App\Providers\MiddlewareServiceProvider::class, ]) - ->create();