<?php
/**
 * Cambiar mi contraseña (usuario logueado)
 * Requiere contraseña actual + nueva. Solo el propio usuario puede cambiar su contraseña aquí.
 */

$mensaje = '';
$error = '';

if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    $actual = $_POST['password_actual'] ?? '';
    $nueva = $_POST['password_nueva'] ?? '';
    $confirmar = $_POST['password_confirmar'] ?? '';

    if (empty($actual)) {
        $error = 'Debe ingresar su contraseña actual.';
    } elseif (strlen($nueva) < (defined('PASSWORD_MIN_LENGTH') ? PASSWORD_MIN_LENGTH : 8)) {
        $error = 'La nueva contraseña debe tener al menos ' . (defined('PASSWORD_MIN_LENGTH') ? PASSWORD_MIN_LENGTH : 8) . ' caracteres.';
    } elseif ($nueva !== $confirmar) {
        $error = 'La nueva contraseña y la confirmación no coinciden.';
    } else {
        $stmt = $pdo->prepare("SELECT id, password_hash FROM administradores WHERE id = ? LIMIT 1");
        $stmt->execute([getAdminId()]);
        $row = $stmt->fetch(PDO::FETCH_ASSOC);
        if (!$row || !password_verify($actual, $row['password_hash'])) {
            $error = 'Contraseña actual incorrecta.';
        } else {
            $hash = password_hash($nueva, PASSWORD_DEFAULT);
            $stmt = $pdo->prepare("UPDATE administradores SET password_hash = ?, fuerza_cambio_password = 0 WHERE id = ? LIMIT 1");
            $stmt->execute([$hash, getAdminId()]);
            $mensaje = 'Contraseña actualizada correctamente.';
        }
    }
}
?>
<style>
.cambiar-pw-box { max-width: 420px; background: #fff; border-radius: 12px; box-shadow: 0 2px 10px rgba(0,0,0,0.08); padding: 28px; }
.cambiar-pw-box h2 { margin: 0 0 20px 0; font-size: 18px; }
.cambiar-pw-box .form-group { margin-bottom: 18px; }
.cambiar-pw-box label { display: block; margin-bottom: 6px; font-weight: 500; color: #495057; font-size: 14px; }
.cambiar-pw-box input { width: 100%; padding: 10px 12px; border: 1px solid #dee2e6; border-radius: 8px; font-size: 14px; }
.cambiar-pw-box .alert { padding: 12px; border-radius: 8px; margin-bottom: 18px; }
.cambiar-pw-box .alert-success { background: #d4edda; color: #155724; }
.cambiar-pw-box .alert-error { background: #f8d7da; color: #721c24; }
.cambiar-pw-box button { padding: 10px 20px; background: #212529; color: #fff; border: none; border-radius: 8px; cursor: pointer; font-size: 14px; }
.cambiar-pw-box button:hover { background: #000; }
</style>
<div class="cambiar-pw-box">
    <h2>Cambiar mi contraseña</h2>
    <?php if ($mensaje): ?>
    <div class="alert alert-success"><?php echo htmlspecialchars($mensaje); ?></div>
    <?php endif; ?>
    <?php if ($error): ?>
    <div class="alert alert-error"><?php echo htmlspecialchars($error); ?></div>
    <?php endif; ?>
    <form method="post">
        <div class="form-group">
            <label>Contraseña actual</label>
            <input type="password" name="password_actual" required placeholder="Tu contraseña actual">
        </div>
        <div class="form-group">
            <label>Nueva contraseña</label>
            <input type="password" name="password_nueva" required minlength="<?php echo defined('PASSWORD_MIN_LENGTH') ? PASSWORD_MIN_LENGTH : 8; ?>" placeholder="Mín. <?php echo defined('PASSWORD_MIN_LENGTH') ? PASSWORD_MIN_LENGTH : 8; ?> caracteres">
        </div>
        <div class="form-group">
            <label>Confirmar nueva contraseña</label>
            <input type="password" name="password_confirmar" required minlength="<?php echo defined('PASSWORD_MIN_LENGTH') ? PASSWORD_MIN_LENGTH : 8; ?>" placeholder="Repetir nueva contraseña">
        </div>
        <button type="submit">Guardar nueva contraseña</button>
    </form>
</div>
