Загрузить файлы в «static»

This commit is contained in:
2026-07-02 14:25:38 +00:00
parent b2d10ec669
commit f5f2f9e3f9
5 changed files with 1759 additions and 0 deletions

79
static/login.html Normal file
View File

@@ -0,0 +1,79 @@
<!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>