✈ full vuelos Vuela bien, vuela barato

Autenticación y sesiones

Modelo

Full Vuelos tiene su propia tabla de usuarios (vuelos_users) y su propia cookie de sesión (fv_sesion, firmada, válida 14 días y limitada a /practica-vuelos). No hay relación con las cuentas del campus Full Advanced:

  • Iniciar sesión en el campus no abre Full Vuelos, y viceversa.
  • Cerrar sesión en Full Vuelos no cierra la sesión del campus.
  • No hay rol de backoffice: todos los usuarios son viajeros (decisión de producto, igual que Full Bazar).

Registro público

POST /practica-vuelos/registro crea una cuenta y abre sesión de inmediato, redirigiendo a la página principal con el aviso de bienvenida. Si el inventario de vuelos existe, la cuenta recibe las mismas dos reservas de ejemplo que viajero.demo (seed_example_bookings): una ida y vuelta BOG ↔ BAQ cancelable (tarifa Plus + maleta documentada + selección de asiento, ~5 días) y un solo-trayecto BOG → MDE dentro de la ventana de check-in. Vuelos agotados o inventario ausente simplemente omiten la reserva correspondiente — el registro nunca falla por esto.

Regla Mensaje
Todos los campos obligatorios Todos los campos son obligatorios.
Contraseña de mínimo 8 caracteres La contraseña debe tener al menos 8 caracteres.
Usuario único El nombre de usuario ya está registrado.
Correo único El correo electrónico ya está registrado.

Las contraseñas se almacenan con hash Argon2id.

Login

POST /practica-vuelos/login. Cualquier fallo (usuario inexistente, contraseña errada, cuenta desactivada) responde 401 con el mismo mensaje genérico Usuario o contraseña inválidos. — nunca se revela cuál parte falló.

El parámetro next redirige tras el login, pero solo a rutas locales de /practica-vuelos; cualquier otro valor cae a la página principal (anti open-redirect).

Páginas protegidas

Requieren sesión de Full Vuelos: el flujo de reserva (/reservar*), Mis reservas, el detalle de reserva, cancelación y check-in. Un visitante anónimo es redirigido (303) al login con ?next= apuntando a su destino original, query string incluida — la búsqueda y el manual son públicos.