<?php

declare(strict_types=1);

namespace App\Http\Requests\Account;

use Illuminate\Foundation\Http\FormRequest;
use Illuminate\Validation\Rules\Password;

/**
 * Валидация POST /api/account/change-password (UI-аудит 21.06.2026, Security).
 *
 * current_password — текущий пароль (проверка совпадения — в контроллере через
 * Hash::check против колонки password_hash). password — новый, min 10 (ТЗ §22.4.1,
 * как reset-flow) + confirmed (password_confirmation).
 */
class ChangePasswordRequest extends FormRequest
{
    public function authorize(): bool
    {
        return $this->user() !== null;
    }

    /**
     * @return array<string, mixed>
     */
    public function rules(): array
    {
        return [
            'current_password' => ['required', 'string'],
            'password' => ['required', 'confirmed', Password::min(10)],
        ];
    }

    /**
     * @return array<string, string>
     */
    public function messages(): array
    {
        return [
            'current_password.required' => 'Укажите текущий пароль.',
            'password.required' => 'Укажите новый пароль.',
            'password.confirmed' => 'Пароли не совпадают.',
            'password.min' => 'Пароль должен быть не короче 10 символов.',
        ];
    }
}
