Code Coverage |
||||||||||
Lines |
Functions and Methods |
Classes and Traits |
||||||||
| Total | |
100.00% |
16 / 16 |
|
100.00% |
4 / 4 |
CRAP | |
100.00% |
1 / 1 |
| StaffRequest | |
100.00% |
16 / 16 |
|
100.00% |
4 / 4 |
5 | |
100.00% |
1 / 1 |
| authorize | |
100.00% |
1 / 1 |
|
100.00% |
1 / 1 |
1 | |||
| rules | |
100.00% |
9 / 9 |
|
100.00% |
1 / 1 |
2 | |||
| messages | |
100.00% |
5 / 5 |
|
100.00% |
1 / 1 |
1 | |||
| prepareForValidation | |
100.00% |
1 / 1 |
|
100.00% |
1 / 1 |
1 | |||
| 1 | <?php |
| 2 | |
| 3 | namespace App\Http\Requests\Admin; |
| 4 | |
| 5 | use Illuminate\Foundation\Http\FormRequest; |
| 6 | use Illuminate\Validation\Rule; |
| 7 | use Illuminate\Validation\Rules\Password; |
| 8 | use Spatie\Permission\Models\Role; |
| 9 | |
| 10 | /** |
| 11 | * Staff = name + email + password + a role. Nothing else. |
| 12 | * (See PROJECT_BRAIN.md Phase 3 — RBAC must stay dead-simple.) |
| 13 | */ |
| 14 | class StaffRequest extends FormRequest |
| 15 | { |
| 16 | public function authorize(): bool |
| 17 | { |
| 18 | return true; |
| 19 | } |
| 20 | |
| 21 | public function rules(): array |
| 22 | { |
| 23 | $staff = $this->route('user'); |
| 24 | $creating = $staff === null; |
| 25 | |
| 26 | return [ |
| 27 | 'name' => ['required', 'string', 'max:255'], |
| 28 | 'email' => ['required', 'string', 'email', 'max:255', Rule::unique('users', 'email')->ignore($staff)], |
| 29 | 'password' => [$creating ? 'required' : 'nullable', 'string', Password::defaults()], |
| 30 | 'role' => ['required', 'string', Rule::in(Role::query()->pluck('name'))], |
| 31 | 'status' => ['nullable', 'boolean'], |
| 32 | ]; |
| 33 | } |
| 34 | |
| 35 | public function messages(): array |
| 36 | { |
| 37 | return [ |
| 38 | 'role.required' => 'Please pick a role for this staff member.', |
| 39 | 'role.in' => 'That role no longer exists — pick one from the list.', |
| 40 | 'password.min' => 'Use at least 8 characters for the password.', |
| 41 | ]; |
| 42 | } |
| 43 | |
| 44 | protected function prepareForValidation(): void |
| 45 | { |
| 46 | $this->merge(['status' => $this->boolean('status')]); |
| 47 | } |
| 48 | } |