91 lines
3.3 KiB
PHP
91 lines
3.3 KiB
PHP
<?php
|
||
/**
|
||
* recuperar_password.php — Formulario recuperación de contraseña
|
||
*/
|
||
require_once __DIR__ . '/config/config.php';
|
||
require_once __DIR__ . '/controllers/AuthController.php';
|
||
|
||
$auth = new AuthController();
|
||
$token = clean($_GET['token'] ?? '');
|
||
$fase = $token ? 'restablecer' : 'solicitar';
|
||
|
||
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
|
||
if ($fase === 'solicitar') {
|
||
$auth->solicitarRecuperacion();
|
||
} else {
|
||
$auth->restablecerPassword();
|
||
}
|
||
}
|
||
|
||
$errorMsg = $_SESSION['error_reset'] ?? null;
|
||
$infoMsg = $_SESSION['info_recuperacion'] ?? null;
|
||
unset($_SESSION['error_reset'], $_SESSION['info_recuperacion']);
|
||
?>
|
||
<!DOCTYPE html>
|
||
<html lang="es" data-theme="light">
|
||
<head>
|
||
<meta charset="UTF-8">
|
||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||
<title>Recuperar Contraseña – <?= APP_NAME ?></title>
|
||
<link rel="stylesheet" href="<?= APP_URL ?>/assets/css/style.css">
|
||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.0/css/all.min.css">
|
||
</head>
|
||
<body>
|
||
<div class="login-page">
|
||
<div class="login-card">
|
||
|
||
<div class="login-logo">
|
||
<div class="login-logo-icon"><i class="fa-solid fa-key"></i></div>
|
||
<h1><?= APP_NAME ?></h1>
|
||
<p><?= $fase === 'solicitar' ? 'Recuperación de contraseña' : 'Establecer nueva contraseña' ?></p>
|
||
</div>
|
||
|
||
<?php if ($errorMsg): ?>
|
||
<div class="alert alert-danger"><i class="fa-solid fa-circle-exclamation"></i> <?= htmlspecialchars($errorMsg) ?></div>
|
||
<?php endif; ?>
|
||
<?php if ($infoMsg): ?>
|
||
<div class="alert alert-info"><i class="fa-solid fa-circle-info"></i> <?= htmlspecialchars($infoMsg) ?></div>
|
||
<?php endif; ?>
|
||
|
||
<?php if ($fase === 'solicitar'): ?>
|
||
<!-- Fase 1: Solicitar email -->
|
||
<form method="POST">
|
||
<?= csrfField() ?>
|
||
<div class="form-group">
|
||
<label class="form-label">Email registrado</label>
|
||
<input type="email" class="form-control" name="email" placeholder="tu@email.com" required autofocus>
|
||
</div>
|
||
<button type="submit" class="btn btn-primary w-100 btn-lg">
|
||
<i class="fa-solid fa-paper-plane"></i> Enviar enlace de recuperación
|
||
</button>
|
||
</form>
|
||
|
||
<?php else: ?>
|
||
<!-- Fase 2: Nueva contraseña -->
|
||
<form method="POST">
|
||
<?= csrfField() ?>
|
||
<input type="hidden" name="token" value="<?= htmlspecialchars($token) ?>">
|
||
<div class="form-group">
|
||
<label class="form-label">Nueva contraseña</label>
|
||
<input type="password" class="form-control" name="password" minlength="8" required placeholder="Mínimo 8 caracteres">
|
||
</div>
|
||
<div class="form-group">
|
||
<label class="form-label">Confirmar contraseña</label>
|
||
<input type="password" class="form-control" name="password_confirm" minlength="8" required placeholder="Repetir contraseña">
|
||
</div>
|
||
<button type="submit" class="btn btn-primary w-100 btn-lg">
|
||
<i class="fa-solid fa-lock"></i> Establecer nueva contraseña
|
||
</button>
|
||
</form>
|
||
<?php endif; ?>
|
||
|
||
<div style="text-align:center;margin-top:1.25rem">
|
||
<a href="<?= APP_URL ?>/login.php" style="color:rgba(255,255,255,.55);font-size:.8rem;text-decoration:none">
|
||
<i class="fa-solid fa-arrow-left"></i> Volver al login
|
||
</a>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</body>
|
||
</html>
|