<?php
require_once 'includes/auth.php';
exigir_rol('admin', 'propietario', 'conserje');
require_once 'conexion.php';
require_once 'includes/layout.php';

$id_usuario = $_SESSION['id_usuario'];
$error = $mensaje = '';

if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    csrf_check();
    $actual    = $_POST['contrasena_actual'];
    $nueva     = $_POST['nueva_contrasena'];
    $confirmar = $_POST['confirmar_contrasena'];

    if ($nueva !== $confirmar) {
        $error = 'Las contraseñas nuevas no coinciden.';
    } elseif (strlen($nueva) < 6) {
        $error = 'La nueva contraseña debe tener al menos 6 caracteres.';
    } else {
        $stmt = $conn->prepare("SELECT password FROM usuarios WHERE id_usuario = ?");
        $stmt->bind_param('i', $id_usuario);
        $stmt->execute();
        $usuario = $stmt->get_result()->fetch_assoc();

        if ($usuario && password_verify($actual, $usuario['password'])) {
            $hash = password_hash($nueva, PASSWORD_DEFAULT);
            $stmt = $conn->prepare("UPDATE usuarios SET password = ? WHERE id_usuario = ?");
            $stmt->bind_param('si', $hash, $id_usuario);
            $mensaje = $stmt->execute() ? 'Contraseña actualizada con éxito.' : 'Error al actualizar la contraseña.';
        } else {
            $error = 'La contraseña actual no es correcta.';
        }
    }
}

page_header('Cambiar Contraseña', 'password');
?>

<div class="row justify-content-center">
  <div class="col-lg-5">
    <div class="card">
      <div class="card-header"><i class="bi bi-key me-2 text-primary"></i> Cambiar Contraseña</div>
      <div class="card-body">

        <?php if ($error): ?>
          <div class="alert alert-danger py-2"><i class="bi bi-x-circle me-1"></i><?= e($error) ?></div>
        <?php elseif ($mensaje): ?>
          <div class="alert alert-success py-2"><i class="bi bi-check-circle me-1"></i><?= e($mensaje) ?></div>
        <?php endif; ?>

        <form method="POST" action="">
          <?= csrf_field() ?>
          <?php
          $campos = [
              ['contrasena_actual',   'Contraseña actual'],
              ['nueva_contrasena',    'Nueva contraseña'],
              ['confirmar_contrasena','Confirmar nueva contraseña'],
          ];
          foreach ($campos as [$name, $label]): ?>
          <div class="mb-3">
            <label class="form-label"><?= $label ?></label>
            <div class="input-group">
              <input type="password" class="form-control" id="<?= $name ?>" name="<?= $name ?>" required>
              <button class="btn btn-outline-secondary toggle-pass" type="button" data-target="<?= $name ?>" tabindex="-1">
                <i class="bi bi-eye"></i>
              </button>
            </div>
          </div>
          <?php endforeach; ?>
          <button type="submit" class="btn btn-primary w-100 py-2">
            <i class="bi bi-check-lg me-1"></i> Actualizar Contraseña
          </button>
        </form>
      </div>
    </div>
  </div>
</div>

<?php
$js = <<<'JS'
<script>
document.querySelectorAll('.toggle-pass').forEach(btn => {
  btn.addEventListener('click', () => {
    const input = document.getElementById(btn.dataset.target);
    const icono = btn.querySelector('i');
    const esPass = input.type === 'password';
    input.type = esPass ? 'text' : 'password';
    icono.className = esPass ? 'bi bi-eye-slash' : 'bi bi-eye';
  });
});
</script>
JS;
page_footer($js);
