71 lines
3.2 KiB
PHP
71 lines
3.2 KiB
PHP
<?php
|
|
|
|
namespace App\Http\Requests;
|
|
|
|
use Illuminate\Foundation\Http\FormRequest;
|
|
|
|
class RegisterGameAccountRequest extends FormRequest
|
|
{
|
|
public function authorize(): bool
|
|
{
|
|
return true;
|
|
}
|
|
|
|
/**
|
|
* @return array<string, \Illuminate\Contracts\Validation\ValidationRule|array<mixed>|string>
|
|
*/
|
|
public function rules(): array
|
|
{
|
|
return [
|
|
'username' => ['required', 'string', 'min:3', 'max:32', 'regex:/^[A-Za-z0-9]+$/'],
|
|
'email' => ['required', 'string', 'email:rfc', 'max:255'],
|
|
'invite_code' => ['required', 'string', 'min:6', 'max:32'],
|
|
'password' => ['required', 'string', 'min:8', 'max:32', 'confirmed', 'regex:/^(?=.*[A-Za-z])(?=.*\d).+$/'],
|
|
'terms' => ['accepted'],
|
|
];
|
|
}
|
|
|
|
/**
|
|
* @return array<string, string>
|
|
*/
|
|
public function messages(): array
|
|
{
|
|
return [
|
|
'username.required' => 'Укажи логин аккаунта.',
|
|
'username.string' => 'Логин должен быть строкой.',
|
|
'username.min' => 'Логин должен содержать минимум 3 символа.',
|
|
'username.max' => 'Логин не должен быть длиннее 32 символов.',
|
|
'username.regex' => 'Логин может содержать только латинские буквы и цифры.',
|
|
'email.required' => 'Укажи email для аккаунта.',
|
|
'email.string' => 'Email должен быть строкой.',
|
|
'email.email' => 'Укажи корректный email адрес.',
|
|
'email.max' => 'Email не должен быть длиннее 255 символов.',
|
|
'invite_code.required' => 'Укажи инвайт-код.',
|
|
'invite_code.string' => 'Инвайт-код должен быть строкой.',
|
|
'invite_code.min' => 'Инвайт-код выглядит слишком коротким.',
|
|
'invite_code.max' => 'Инвайт-код выглядит слишком длинным.',
|
|
'password.required' => 'Укажи пароль.',
|
|
'password.string' => 'Пароль должен быть строкой.',
|
|
'password.min' => 'Пароль должен содержать минимум 8 символов.',
|
|
'password.max' => 'Пароль не должен быть длиннее 32 символов.',
|
|
'password.confirmed' => 'Подтверждение пароля не совпадает.',
|
|
'password.regex' => 'Пароль должен содержать хотя бы одну букву и одну цифру.',
|
|
'terms.accepted' => 'Нужно принять правила сервера и пользовательское соглашение.',
|
|
];
|
|
}
|
|
|
|
/**
|
|
* @return array<string, string>
|
|
*/
|
|
public function attributes(): array
|
|
{
|
|
return [
|
|
'username' => 'логин аккаунта',
|
|
'email' => 'email',
|
|
'invite_code' => 'инвайт-код',
|
|
'password' => 'пароль',
|
|
'terms' => 'правила',
|
|
];
|
|
}
|
|
}
|