Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
100.00% covered (success)
100.00%
16 / 16
100.00% covered (success)
100.00%
4 / 4
CRAP
100.00% covered (success)
100.00%
1 / 1
StaffRequest
100.00% covered (success)
100.00%
16 / 16
100.00% covered (success)
100.00%
4 / 4
5
100.00% covered (success)
100.00%
1 / 1
 authorize
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 rules
100.00% covered (success)
100.00%
9 / 9
100.00% covered (success)
100.00%
1 / 1
2
 messages
100.00% covered (success)
100.00%
5 / 5
100.00% covered (success)
100.00%
1 / 1
1
 prepareForValidation
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
1<?php
2
3namespace App\Http\Requests\Admin;
4
5use Illuminate\Foundation\Http\FormRequest;
6use Illuminate\Validation\Rule;
7use Illuminate\Validation\Rules\Password;
8use 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 */
14class 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}