Files
sistema-abogadas-litoral/resources/views/auth/recuperar-credenciales-admin.blade.php
2026-06-24 16:21:44 -03:00

143 lines
7.1 KiB
PHP

<!doctype html>
<html lang="es">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Recuperar credenciales administrador</title>
@vite(['resources/css/app.css', 'resources/js/app.js'])
</head>
<body class="bg-light">
<main class="container py-5">
<div class="row justify-content-center">
<div class="col-12 col-sm-10 col-md-8 col-lg-5">
<div class="card shadow-sm border-0">
<div class="card-body p-4 p-md-5">
<h1 class="h4 mb-1 text-center">Recuperar credenciales administrador</h1>
<p class="text-muted text-center small mb-4">Completá todos los datos con los que está registrado en el sistema</p>
@if(session('recuperar_success'))
<div class="alert alert-success" role="alert">
{{ session('recuperar_success') }}
</div>
@endif
@if(session('recuperar_error'))
<div class="alert alert-danger" role="alert">
{{ session('recuperar_error') }}
</div>
@endif
@if($errors->any())
<div class="alert alert-danger" role="alert">
<ul class="mb-0 ps-3">
@foreach($errors->all() as $error)
<li>{{ $error }}</li>
@endforeach
</ul>
</div>
@endif
<div class="alert alert-warning py-2" role="alert">
<strong>Intentos restantes:</strong> {{ $intentosRestantes ?? 5 }} de {{ $intentosMaximos ?? 5 }}
</div>
<form method="POST" action="/admin/recuperar-credenciales" class="d-grid gap-3">
@csrf
<div>
<label class="form-label" for="celular">Número de celular</label>
<input class="form-control" id="celular" name="celular" type="text" value="{{ old('celular') }}" required autofocus>
</div>
<div>
<label class="form-label" for="nombre">Nombre</label>
<input class="form-control" id="nombre" name="nombre" type="text" value="{{ old('nombre') }}" required>
</div>
<div>
<label class="form-label" for="apellido">Apellido</label>
<input class="form-control" id="apellido" name="apellido" type="text" value="{{ old('apellido') }}" required>
</div>
<div>
<label class="form-label" for="correo">Correo electrónico</label>
<input class="form-control" id="correo" name="correo" type="email" value="{{ old('correo') }}" required>
</div>
<div>
<label class="form-label" for="pregunta_secreta">Pregunta secreta</label>
<input class="form-control" id="pregunta_secreta" name="pregunta_secreta" type="text" value="{{ old('pregunta_secreta') }}" placeholder="Ingresá el correo para visualizar la pregunta" readonly>
<div id="pregunta-secreta-ayuda" class="form-text">La pregunta se mostrará automáticamente según el correo ingresado.</div>
</div>
<div>
<label class="form-label" for="respuesta_secreta">Respuesta secreta</label>
<input class="form-control" id="respuesta_secreta" name="respuesta_secreta" type="text" value="{{ old('respuesta_secreta') }}" required>
</div>
<div style="position:absolute; left:-9999px; width:1px; height:1px; overflow:hidden;" aria-hidden="true">
<label class="form-label" for="website">No completar este campo</label>
<input class="form-control" id="website" name="website" type="text" value="{{ old('website') }}" tabindex="-1" autocomplete="off">
</div>
<button class="btn btn-primary" type="submit">Enviar enlace</button>
</form>
<hr class="my-4">
<div class="d-grid">
<a href="/login/personal" class="btn btn-outline-secondary">Volver al login</a>
</div>
</div>
</div>
</div>
</div>
</main>
<script>
document.addEventListener('DOMContentLoaded', function () {
const correoInput = document.getElementById('correo');
const preguntaInput = document.getElementById('pregunta_secreta');
const ayuda = document.getElementById('pregunta-secreta-ayuda');
if (!correoInput || !preguntaInput || !ayuda) {
return;
}
const limpiarPregunta = (mensaje = 'La pregunta se mostrará automáticamente según el correo ingresado.') => {
preguntaInput.value = '';
ayuda.textContent = mensaje;
};
const cargarPregunta = async () => {
const correo = correoInput.value.trim();
if (correo === '') {
limpiarPregunta();
return;
}
ayuda.textContent = 'Buscando pregunta secreta...';
try {
const response = await fetch('/admin/recuperar-credenciales/pregunta?correo=' + encodeURIComponent(correo), {
headers: {
'X-Requested-With': 'XMLHttpRequest'
}
});
const data = await response.json();
if (data.encontrada && data.pregunta) {
preguntaInput.value = data.pregunta;
ayuda.textContent = 'Respondé la pregunta secreta para continuar.';
} else {
limpiarPregunta('No se encontró una pregunta secreta visible para ese correo.');
}
} catch (error) {
limpiarPregunta('No se pudo cargar la pregunta secreta. Intentá nuevamente.');
}
};
correoInput.addEventListener('blur', cargarPregunta);
correoInput.addEventListener('change', cargarPregunta);
if (correoInput.value.trim() !== '') {
cargarPregunta();
}
});
</script>
</body>
</html>