input('registration_draft_token'); $user = Auth::user(); if (is_string($token) && $user instanceof User) { $this->registrationDraft = app(StudentRegistrationDraftService::class) ->findOwnedDraft($user, $token); if ($this->registrationDraft !== null) { // Os dados validados do rascunho são a fonte oficial. Assim, o // payload final não consegue sobrescrevê-los sem nova validação. $this->merge($this->registrationDraft['data']); } } parent::prepareForValidation(); } public function rules(): array { $rules = parent::rules(); $rules['registration_draft_token'] = [ 'nullable', 'uuid', Rule::requiredIf(fn (): bool => $this->studentIsMinor()), ]; $rules['responsible'][] = 'required_array_keys:name,birth_date,cpf,degree,email,phone,postal_code,street,neighborhood,city_id,state_id'; $rules['responsible.email'] .= '|unique:student_responsibles,email'; return $rules; } public function after(): array { return [ function (Validator $validator): void { if ($this->input('registration_draft_token') === null) { return; } if ( !$validator->errors()->has('registration_draft_token') && $this->registrationDraft === null ) { $validator->errors()->add( 'registration_draft_token', __('validation.registration_draft_invalid'), ); } }, ]; } }