-
app/Policies/TimeSlotPolicy.php
Open in GitHubuse App\Enums\Permission; use App\Models\TimeSlot; use App\Models\User; class TimeSlotPolicy { public function createOrForSelf(User $user): bool { return $user->can(Permission::create, TimeSlot::class) || ($user->school->teachers_can_create && $user->canOwnTimeSlots()); } public function updateOrForSelf(User $user, TimeSlot $timeSlot): bool { return $user->id === $timeSlot->user_id || $user->can(Permission::update, $timeSlot); } public function deleteOrForSelf(User $user, TimeSlot $timeSlot): bool { return $user->id === $timeSlot->user_id || $user->can(Permission::delete, $timeSlot); } }
-
app/Http/Requests/CreateTimeSlotRequest.php
Open in GitHubuse App\Models\TimeSlot; use Illuminate\Foundation\Http\FormRequest; class CreateTimeSlotRequest extends FormRequest { public function authorize(): bool { $user = $this->user(); if ($this->isMethod('post')) { return $user->can('createOrForSelf', TimeSlot::class); } return $user->can('updateOrForSelf', TimeSlot::class); } // ... }