Login form with role-based redirect (ADMIN→demo, BODEGA→bodega, TALLER→demo). Register form for TALLER/BODEGA with admin approval required. Includes authFetch() wrapper with automatic token refresh. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
109 lines
5.3 KiB
HTML
109 lines
5.3 KiB
HTML
<!DOCTYPE html>
|
|
<html lang="es">
|
|
<head>
|
|
<meta charset="UTF-8">
|
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
<title>Nexus Autoparts - Iniciar Sesion</title>
|
|
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&family=Orbitron:wght@400;500;600;700&display=swap" rel="stylesheet">
|
|
<link rel="stylesheet" href="/shared.css">
|
|
<link rel="stylesheet" href="/login.css">
|
|
</head>
|
|
<body class="login-page">
|
|
|
|
<div class="login-card">
|
|
<!-- Brand -->
|
|
<div class="login-brand">
|
|
<div class="logo-icon">⚙</div>
|
|
<h1>NEXUS <span>AUTOPARTS</span></h1>
|
|
<p class="slogan">Tu conexion directa con las partes que necesitas</p>
|
|
</div>
|
|
|
|
<!-- Alert (shared between forms) -->
|
|
<div id="alert" class="login-alert" role="alert"></div>
|
|
|
|
<!-- LOGIN FORM -->
|
|
<div id="loginPanel" class="form-panel active">
|
|
<h2 class="form-title">Iniciar Sesion</h2>
|
|
<form id="loginForm" autocomplete="on">
|
|
<div class="form-group">
|
|
<label class="form-label" for="loginEmail">Correo electronico</label>
|
|
<input class="form-input" type="email" id="loginEmail" name="email"
|
|
placeholder="tu@correo.com" required autocomplete="email">
|
|
</div>
|
|
<div class="form-group">
|
|
<label class="form-label" for="loginPassword">Contrasena</label>
|
|
<input class="form-input" type="password" id="loginPassword" name="password"
|
|
placeholder="Tu contrasena" required autocomplete="current-password">
|
|
</div>
|
|
<button type="submit" class="btn btn-primary btn-submit">
|
|
<span class="spinner"></span>
|
|
<span class="btn-label">Iniciar Sesion</span>
|
|
</button>
|
|
</form>
|
|
<p class="toggle-link">
|
|
¿No tienes cuenta? <a onclick="showPanel('register')">Registrate</a>
|
|
</p>
|
|
</div>
|
|
|
|
<!-- REGISTER FORM -->
|
|
<div id="registerPanel" class="form-panel">
|
|
<h2 class="form-title">Crear Cuenta</h2>
|
|
<form id="registerForm" autocomplete="on">
|
|
<div class="form-group">
|
|
<label class="form-label" for="regName">Nombre completo</label>
|
|
<input class="form-input" type="text" id="regName" name="name"
|
|
placeholder="Juan Perez" required autocomplete="name">
|
|
</div>
|
|
<div class="form-group">
|
|
<label class="form-label" for="regEmail">Correo electronico</label>
|
|
<input class="form-input" type="email" id="regEmail" name="email"
|
|
placeholder="tu@correo.com" required autocomplete="email">
|
|
</div>
|
|
<div class="form-row">
|
|
<div class="form-group">
|
|
<label class="form-label" for="regPassword">Contrasena</label>
|
|
<input class="form-input" type="password" id="regPassword" name="password"
|
|
placeholder="Min. 8 caracteres" required minlength="8"
|
|
autocomplete="new-password">
|
|
</div>
|
|
<div class="form-group">
|
|
<label class="form-label" for="regConfirm">Confirmar contrasena</label>
|
|
<input class="form-input" type="password" id="regConfirm" name="confirm"
|
|
placeholder="Repetir contrasena" required minlength="8"
|
|
autocomplete="new-password">
|
|
</div>
|
|
</div>
|
|
<div class="form-group">
|
|
<label class="form-label" for="regBusiness">Nombre del negocio</label>
|
|
<input class="form-input" type="text" id="regBusiness" name="business_name"
|
|
placeholder="Taller / Refaccionaria" required autocomplete="organization">
|
|
</div>
|
|
<div class="form-row">
|
|
<div class="form-group">
|
|
<label class="form-label" for="regPhone">Telefono</label>
|
|
<input class="form-input" type="tel" id="regPhone" name="phone"
|
|
placeholder="(555) 123-4567" required autocomplete="tel">
|
|
</div>
|
|
<div class="form-group">
|
|
<label class="form-label" for="regRole">Tipo de cuenta</label>
|
|
<select class="form-select" id="regRole" name="role" required>
|
|
<option value="TALLER">Taller</option>
|
|
<option value="BODEGA">Bodega</option>
|
|
</select>
|
|
</div>
|
|
</div>
|
|
<button type="submit" class="btn btn-primary btn-submit">
|
|
<span class="spinner"></span>
|
|
<span class="btn-label">Crear Cuenta</span>
|
|
</button>
|
|
</form>
|
|
<p class="toggle-link">
|
|
¿Ya tienes cuenta? <a onclick="showPanel('login')">Inicia Sesion</a>
|
|
</p>
|
|
</div>
|
|
</div>
|
|
|
|
<script src="/login.js"></script>
|
|
</body>
|
|
</html>
|