<?php
/** Recuperação de senha: gera token de 1h e envia por e-mail.
 *  Sem SMTP configurado (desenvolvimento), devolve o link na resposta. */

require_once __DIR__ . '/db.php';
require_once __DIR__ . '/email.php';

iniciar_sessao();
if ($_SERVER['REQUEST_METHOD'] !== 'POST') {
    responder(['erro' => 'Método não permitido'], 405);
}

$email = mb_strtolower(trim(corpo_json()['email'] ?? ''));
$u = usuario_por_email($email);

// resposta idêntica com ou sem conta — não revela e-mails cadastrados
$resposta = ['ok' => true, 'mensagem' => 'Se existir uma conta com este e-mail, enviamos as instruções.'];

if ($u) {
    $token = bin2hex(random_bytes(24));
    $st = db()->prepare(
        "UPDATE usuarios SET reset_token = ?, reset_expira = datetime('now', '+1 hour') WHERE id = ?"
    );
    $st->execute([hash('sha256', $token), $u['id']]);

    $link = BASE_URL . 'casa#/redefinir/' . $token;
    $enviado = enviar_email(
        $u['email'],
        'Redefinir sua senha — Habitar',
        email_moldura(
            'Redefinir sua senha',
            '<p>Olá, ' . htmlspecialchars($u['nome']) . '.</p>'
            . '<p>Recebemos um pedido para redefinir a senha da sua conta no Habitar. '
            . 'O link abaixo vale por 1 hora:</p>'
            . '<p><a href="' . $link . '" style="color:#7C5F45;font-weight:bold">Criar uma nova senha</a></p>'
            . '<p>Se não foi você, pode ignorar este e-mail — nada muda.</p>'
        )
    );
    if (!$enviado && !smtp_configurado()) {
        // ambiente de desenvolvimento: entrega o link direto na tela
        $resposta['demo_link'] = $link;
    }
}

responder($resposta);
