diff --git a/app/Architecture/Providers/AuthServiceProvider.php b/app/Architecture/Providers/AuthServiceProvider.php index 88f3b1c..a17b6b7 100644 --- a/app/Architecture/Providers/AuthServiceProvider.php +++ b/app/Architecture/Providers/AuthServiceProvider.php @@ -5,10 +5,14 @@ declare(strict_types=1); namespace Toby\Architecture\Providers; use Illuminate\Foundation\Support\Providers\AuthServiceProvider as ServiceProvider; +use Toby\Domain\Policies\HolidayPolicy; +use Toby\Eloquent\Models\Holiday; class AuthServiceProvider extends ServiceProvider { - protected $policies = []; + protected $policies = [ + Holiday::class => HolidayPolicy::class + ]; public function boot(): void { diff --git a/app/Domain/Policies/HolidayPolicy.php b/app/Domain/Policies/HolidayPolicy.php new file mode 100644 index 0000000..907c9ee --- /dev/null +++ b/app/Domain/Policies/HolidayPolicy.php @@ -0,0 +1,16 @@ +role == Role::AdministrativeApprover || $user->role == Role::Administrator; + } +} diff --git a/app/Infrastructure/Http/Controllers/HolidayController.php b/app/Infrastructure/Http/Controllers/HolidayController.php index fe256dd..cf9558d 100644 --- a/app/Infrastructure/Http/Controllers/HolidayController.php +++ b/app/Infrastructure/Http/Controllers/HolidayController.php @@ -5,7 +5,9 @@ declare(strict_types=1); namespace Toby\Infrastructure\Http\Controllers; use Illuminate\Http\RedirectResponse; +use Illuminate\Http\Request; use Inertia\Response; +use Toby\Domain\Policies\HolidayPolicy; use Toby\Eloquent\Models\Holiday; use Toby\Infrastructure\Http\Requests\HolidayRequest; use Toby\Infrastructure\Http\Resources\HolidayFormDataResource; @@ -13,14 +15,18 @@ use Toby\Infrastructure\Http\Resources\HolidayResource; class HolidayController extends Controller { - public function index(): Response + public function index(Request $request): Response { $holidays = Holiday::query() ->orderBy("date") ->get(); + $user = $request->user(); return inertia("Holidays/Index", [ "holidays" => HolidayResource::collection($holidays), + "can" => [ + "create" => $user->can("create", Holiday::class) + ], ]); } diff --git a/resources/js/Pages/Holidays/Index.vue b/resources/js/Pages/Holidays/Index.vue index bd71b55..3a49db0 100644 --- a/resources/js/Pages/Holidays/Index.vue +++ b/resources/js/Pages/Holidays/Index.vue @@ -10,7 +10,7 @@ Lista dni wolnych od pracy w danym roku
-