namespace App\Http\Requests\Auth; use Illuminate\Foundation\Http\FormRequest; use Illuminate\Validation\Rules\Password; class RegisterRequest extends FormRequest { public function authorize() { return true; } public function rules() { return [ 'username' => ['required', 'string', 'min:3', 'max:50', 'unique:users', 'alpha_dash'], 'email' => ['required', 'string', 'email', 'max:255', 'unique:users'], 'password' => ['required', 'confirmed', Password::min(8) ->mixedCase() ->numbers() ->symbols() ->uncompromised(), ], 'first_name' => ['nullable', 'string', 'max:50'], 'last_name' => ['nullable', 'string', 'max:50'], 'phone' => ['nullable', 'string', 'max:20'], 'country' => ['nullable', 'string', 'max:50'], 'referral_code' => ['nullable', 'string', 'exists:users,referral_code'], 'terms' => ['required', 'accepted'], ]; } public function messages() { return [ 'username.required' => 'Username is required.', 'username.unique' => 'This username is already taken.', 'username.alpha_dash' => 'Username may only contain letters, numbers, dashes and underscores.', 'email.required' => 'Email address is required.', 'email.unique' => 'This email is already registered.', 'password.required' => 'Password is required.', 'password.confirmed' => 'Password confirmation does not match.', 'terms.required' => 'You must accept the terms and conditions.', ]; } }