diff --git a/app/Http/Requests/StoreTicket.php b/app/Http/Requests/StoreTicket.php index 4f73e40..306b01a 100644 --- a/app/Http/Requests/StoreTicket.php +++ b/app/Http/Requests/StoreTicket.php @@ -2,6 +2,7 @@ namespace App\Http\Requests; +use App\Enums\Role; use App\Enums\TicketStatus; use App\Enums\TicketType; use Illuminate\Foundation\Http\FormRequest; @@ -15,6 +16,11 @@ class StoreTicket extends FormRequest */ public function authorize() { + if (!auth()->user()->role->equals(Role::admin())) { + $this->merge([ + 'status' => TicketStatus::new()->value, + ]); + } return auth()->check(); } @@ -26,7 +32,18 @@ class StoreTicket extends FormRequest public function rules() { return [ - 'project_id' => 'required|exists:projects,id', + 'project_id' => [ + 'required', + 'exists:projects,id', + // @phpcs:ignore Generic.CodeAnalysis.UnusedFunctionParameter.FoundInExtendedClassBeforeLastUsed + function ($attribute, $value, $fail) { + if (!in_array($value, auth()->user()->projects()->pluck('id')->all())) { + $fail(__('Veuillez choisir entre :values', [ + 'value' => auth()->user()->projects()->pluck('name')->implode(',') + ])); + } + } + ], 'type' => [ 'required', // @phpcs:ignore Generic.CodeAnalysis.UnusedFunctionParameter.FoundInExtendedClassBeforeLastUsed diff --git a/app/Http/Requests/UpdateTicket.php b/app/Http/Requests/UpdateTicket.php index 203416a..040bde7 100644 --- a/app/Http/Requests/UpdateTicket.php +++ b/app/Http/Requests/UpdateTicket.php @@ -9,6 +9,12 @@ class UpdateTicket extends StoreTicket { public function authorize() { - return auth()->check() and (auth()->user()->role->equals(Role::admin())); + if (!auth()->user()->role->equals(Role::admin())) { + $this->merge([ + 'status' => $this->project->status->value, + ]); + } + return auth()->check() and (auth()->user()->role->equals(Role::admin()) or + request()->route()->ticket->created_by === auth()->user()->id); } } diff --git a/resources/views/ticket/form-inputs.blade.php b/resources/views/ticket/form-inputs.blade.php index 5f8c721..e015468 100644 --- a/resources/views/ticket/form-inputs.blade.php +++ b/resources/views/ticket/form-inputs.blade.php @@ -1,10 +1,17 @@ @include('modules.error-messages') +@php +$userPr = Auth::user()->projects; +@endphp