<?php
if (session_status() === PHP_SESSION_NONE) session_start();
date_default_timezone_set('America/Argentina/Buenos_Aires');

require __DIR__ . '/config/db2.php';
require __DIR__ . '/config/mail.php';

$msg = $err = '';
$phase = 'request'; // 'request' | 'form' | 'done'
$tokenUser = null;

$token = trim($_GET['token'] ?? '');

if ($token !== '') {
    $tokenHash = hash('sha256', $token);
    $stmt = $pdo->prepare("SELECT id, name FROM mrbs_users WHERE reset_key_hash = ? AND reset_key_expiry > ? LIMIT 1");
    $stmt->execute([$tokenHash, time()]);
    $tokenUser = $stmt->fetch(PDO::FETCH_ASSOC);
    if (!$tokenUser) {
        $err = 'El enlace no es válido o ha expirado. Solicite uno nuevo.';
    } else {
        $phase = 'form';
        if ($_SERVER['REQUEST_METHOD'] === 'POST') {
            $p1 = $_POST['nueva_password'] ?? '';
            $p2 = $_POST['confirmar_password'] ?? '';
            if (strlen($p1) < 8) {
                $err = 'La contraseña debe tener al menos 8 caracteres.';
            } elseif ($p1 !== $p2) {
                $err = 'Las contraseñas no coinciden.';
            } else {
                $pdo->prepare("UPDATE mrbs_users SET password_hash=?, reset_key_hash='', reset_key_expiry=0 WHERE id=?")
                    ->execute([password_hash($p1, PASSWORD_DEFAULT), $tokenUser['id']]);
                $phase = 'done';
            }
        }
    }
} elseif ($_SERVER['REQUEST_METHOD'] === 'POST') {
    $usuario = trim($_POST['usuario'] ?? '');
    if ($usuario === '') {
        $err = 'Ingrese su nombre de usuario.';
    } else {
        $stmt = $pdo->prepare("SELECT id, name, email FROM mrbs_users WHERE name = ? LIMIT 1");
        $stmt->execute([$usuario]);
        $user = $stmt->fetch(PDO::FETCH_ASSOC);
        if (!$user) {
            $msg = 'Si el usuario existe, recibirá un email con instrucciones.';
        } elseif (empty($user['email'])) {
            $msg = 'Su cuenta no tiene email registrado. Contacte al Administrador del sistema.';
        } else {
            $tok    = bin2hex(random_bytes(32));
            $hash   = hash('sha256', $tok);
            $expiry = time() + 3600;
            $pdo->prepare("UPDATE mrbs_users SET reset_key_hash=?, reset_key_expiry=? WHERE id=?")
                ->execute([$hash, $expiry, $user['id']]);
            $proto = (!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off') ? 'https' : 'http';
            $url   = $proto . '://' . $_SERVER['HTTP_HOST'] . $_SERVER['SCRIPT_NAME'] . '?token=' . $tok;
            $body  = "Para restablecer su contraseña, haga clic en el siguiente enlace (válido 1 hora):\r\n\r\n$url\r\n\r\nSi no solicitó este cambio, ignore este mensaje.";
            try {
                $mailer = crearMailer();
                $mailer->addAddress($user['email']);
                $mailer->Subject = 'Restablecer contraseña – Agenda Juicios OGJ Rosario';
                $mailer->Body    = $body;
                $mailer->send();
                $msg = 'Se enviaron instrucciones al email registrado.';
            } catch (Throwable $e) {
                $msg = 'Error al enviar el email. Contacte al Administrador. (' . $e->getMessage() . ')';
            }
        }
    }
}
?><!DOCTYPE html>
<html lang="es">
<head>
<meta charset="UTF-8"><meta name="viewport" content="width=device-width,initial-scale=1">
<title>Restablecer contraseña · Agenda Juicios</title>
<style>
*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
body{font-family:Arial,sans-serif;background:#f0f2f5;display:flex;align-items:center;justify-content:center;min-height:100vh;color:#1e293b}
.box{background:#fff;border:1px solid #e2e8f0;border-radius:12px;padding:36px 40px;width:380px;max-width:95vw;box-shadow:0 4px 24px rgba(0,0,0,.08)}
.logo{text-align:center;margin-bottom:20px}
.logo .t1{font-size:18px;font-weight:700;color:#1e293b}
.logo .t2{font-size:12px;color:#64748b;margin-top:4px}
label{display:block;font-size:12px;font-weight:700;color:#475569;margin-bottom:4px;margin-top:14px}
input{width:100%;padding:9px 12px;border:1px solid #d1d5db;border-radius:6px;font-size:14px;outline:none;transition:border .15s}
input:focus{border-color:#2563eb;box-shadow:0 0 0 3px rgba(37,99,235,.1)}
.btn{margin-top:18px;width:100%;padding:10px;border:none;border-radius:6px;font-size:14px;font-weight:700;cursor:pointer;transition:opacity .15s}
.btn-p{background:#2563eb;color:#fff}.btn-p:hover{opacity:.88}
.msg-ok{margin-top:14px;padding:9px 12px;background:#d1fae5;color:#065f46;border:1px solid #6ee7b7;border-radius:6px;font-size:13px}
.msg-err{margin-top:14px;padding:9px 12px;background:#fee2e2;color:#991b1b;border:1px solid #fca5a5;border-radius:6px;font-size:13px}
.foot{margin-top:16px;text-align:center;font-size:12px;color:#64748b}
.foot a{color:#2563eb;text-decoration:none}
.note{font-size:12px;color:#64748b;margin-top:8px;line-height:1.5}
</style>
</head>
<body>
<div class="box">
  <div class="logo">
    <div class="t1">&#9878; Restablecer contraseña</div>
    <div class="t2">Agenda Juicios &middot; OGJ Rosario</div>
  </div>

  <?php if ($phase === 'done'): ?>
    <div class="msg-ok">Contraseña actualizada correctamente.</div>
    <div class="foot" style="margin-top:20px"><a href="../login.php">&#8592; Iniciar sesión</a></div>

  <?php elseif ($phase === 'form'): ?>
    <p class="note">Usuario: <strong><?=htmlspecialchars($tokenUser['name'])?></strong>. Ingrese la nueva contraseña (mínimo 8 caracteres).</p>
    <form method="post" action="?token=<?=htmlspecialchars(urlencode($token))?>">
      <label for="nueva_password">Nueva contraseña</label>
      <input type="password" id="nueva_password" name="nueva_password" autocomplete="new-password" required minlength="8">
      <label for="confirmar_password">Confirmar contraseña</label>
      <input type="password" id="confirmar_password" name="confirmar_password" autocomplete="new-password" required minlength="8">
      <?php if ($err): ?><div class="msg-err"><?=htmlspecialchars($err)?></div><?php endif; ?>
      <button type="submit" class="btn btn-p">Guardar contraseña</button>
    </form>
    <div class="foot"><a href="../login.php">&#8592; Volver al inicio</a></div>

  <?php else: ?>
    <p class="note">Ingrese su nombre de usuario. Si tiene email registrado, recibirá un enlace para restablecer su contraseña.</p>
    <form method="post" action="">
      <label for="usuario">Usuario</label>
      <input type="text" id="usuario" name="usuario" autocomplete="username" autofocus
             value="<?=htmlspecialchars($_POST['usuario']??'')?>">
      <?php if ($err): ?><div class="msg-err"><?=htmlspecialchars($err)?></div><?php endif; ?>
      <?php if ($msg): ?><div class="msg-ok"><?=htmlspecialchars($msg)?></div><?php endif; ?>
      <button type="submit" class="btn btn-p">Enviar instrucciones</button>
    </form>
    <div class="foot"><a href="../login.php">&#8592; Volver al inicio</a></div>
  <?php endif; ?>

  <?php if ($err && $phase === 'request'): ?><?php endif; ?>
</div>
</body>
</html>
