Files
portal/app/app/Http/Requests/Auth/RegisterRequest.php
T

51 lines
1.9 KiB
PHP

<?php
declare(strict_types=1);
namespace App\Http\Requests\Auth;
use App\Http\Requests\Auth\Concerns\HasPasswordRules;
use Illuminate\Foundation\Http\FormRequest;
use Illuminate\Validation\Rule;
/**
* Валидация POST /api/auth/register.
*
* По ТЗ §1.5/§4.1: 2 обязательных click-wrap'а — оферта + согласие на ПДн
* (3-й «маркетинговый» из handoff НЕ требуется — расхождение #2 реестра v1.13).
*/
class RegisterRequest extends FormRequest
{
use HasPasswordRules;
/**
* @return array<string, mixed>
*
* NB: уникальность email НЕ через DB-rule — её решает RegistrationService
* (активный email → 422 email_taken; неподтверждённый → перевыпуск кода).
* Капча проверяется на КАЖДОМ register-запросе (это независимый публичный POST).
*/
public function rules(): array
{
return [
'email' => ['required', 'string', 'email', 'max:255'],
'password' => $this->passwordRules(),
'accept_offer' => ['required', 'accepted'],
'accept_pdn' => ['required', 'accepted'],
'captcha_token' => ['required', 'string'],
];
}
/** @return array<string, string> */
public function messages(): array
{
return array_merge($this->passwordMessages(), [
'email.required' => 'Укажите email.',
'email.email' => 'Email указан некорректно.',
'accept_offer.accepted' => 'Необходимо принять оферту.',
'accept_pdn.accepted' => 'Необходимо согласие на обработку персональных данных.',
'captcha_token.required' => 'Подтвердите, что вы не робот.',
]);
}
}