80 lines
3.1 KiB
HTML
80 lines
3.1 KiB
HTML
<!DOCTYPE html>
|
||
<html lang="ru">
|
||
<head>
|
||
<meta charset="UTF-8">
|
||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||
<title>Вход — Robo Arena</title>
|
||
<link rel="stylesheet" href="/static/style.css">
|
||
</head>
|
||
<body>
|
||
<div class="auth-wrap">
|
||
<div class="auth-panel">
|
||
<div class="robot-icon">⚔</div>
|
||
<div class="sys-label">Robo Arena / РСУ</div>
|
||
<h1>Вход пилота</h1>
|
||
<p>Управляйте боевыми роботами, следите за телеметрией и ведите журнал сражений из любой точки мира.</p>
|
||
<div class="arena-stats">
|
||
<div class="arena-stat">🤖 Роботы в арене <span>READY</span></div>
|
||
<div class="arena-stat">📊 Журнал боёв <span>LOG</span></div>
|
||
</div>
|
||
</div>
|
||
<div class="auth-form-area">
|
||
<div class="auth-box">
|
||
<h2>Авторизация</h2>
|
||
<p class="sub">Введите данные своего аккаунта пилота</p>
|
||
|
||
<div class="field">
|
||
<label for="email">Электронная почта</label>
|
||
<input type="email" id="email" placeholder="pilot@arena.ru" autocomplete="email">
|
||
</div>
|
||
|
||
<div class="field">
|
||
<label for="password">Пароль</label>
|
||
<input type="password" id="password" placeholder="••••••••" autocomplete="current-password">
|
||
</div>
|
||
|
||
<button class="btn btn-primary" id="submit-btn">Войти на арену</button>
|
||
<p class="err-msg" id="error-text"></p>
|
||
|
||
<div class="link-row">Нет аккаунта? <a href="/static/register.html">Стать пилотом</a></div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<script>
|
||
const errEl = document.getElementById("error-text");
|
||
const submitBtn = document.getElementById("submit-btn");
|
||
|
||
submitBtn.addEventListener("click", async () => {
|
||
errEl.textContent = "";
|
||
const email = document.getElementById("email").value.trim();
|
||
const password = document.getElementById("password").value;
|
||
|
||
if (!email || !password) { errEl.textContent = "Заполните все поля"; return; }
|
||
|
||
submitBtn.disabled = true;
|
||
submitBtn.textContent = "Проверяем…";
|
||
|
||
try {
|
||
const res = await fetch("/api/login", {
|
||
method: "POST",
|
||
headers: { "Content-Type": "application/json" },
|
||
credentials: "include",
|
||
body: JSON.stringify({ email, password })
|
||
});
|
||
const data = await res.json();
|
||
if (!res.ok) { errEl.textContent = data.detail || "Неверная почта или пароль"; return; }
|
||
window.location.href = "/static/dashboard.html";
|
||
} catch {
|
||
errEl.textContent = "Не удалось связаться с сервером";
|
||
} finally {
|
||
submitBtn.disabled = false;
|
||
submitBtn.textContent = "Войти на арену";
|
||
}
|
||
});
|
||
|
||
document.addEventListener("keydown", e => { if (e.key === "Enter") submitBtn.click(); });
|
||
</script>
|
||
</body>
|
||
</html>
|