ProyectoGestionDocumentos/recuperar_password.php

91 lines
3.3 KiB
PHP
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?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>