- keyset-пагинация аудита с курсором (occurred_at, id) и UI «Показать ещё» - пакетный /api/v1/labs/details и переход progress на один запрос - абсолютный потолок сессии 30 дней (identity V12 + web), очистка refresh - админская инвентаризация legacy-активов (/admin/legacy-assets, скрипт) - E2E в Chromium/Firefox/WebKit (18/18), CI preflight - LDD: 51 claim, 346 тестов, docs и handoff обновлены
21 lines
1.3 KiB
HTML
21 lines
1.3 KiB
HTML
<!DOCTYPE html>
|
|
<html lang="ru" xmlns:th="http://www.thymeleaf.org" th:replace="~{fragments/base :: layout(~{::title}, ~{::#content})}">
|
|
<head><title>Вход — LMS</title></head>
|
|
<body>
|
|
<div id="content">
|
|
<div class="container-sm">
|
|
<h1 class="page-title">Вход</h1>
|
|
<div th:if="${!adminExists}" class="alert alert-warning">
|
|
Аккаунт администратора ещё не создан. <a th:href="@{/setup}">Создать первый аккаунт</a>
|
|
</div>
|
|
<div th:if="${error}" class="alert alert-warning" th:text="${error}">Срок сессии истёк. Войдите заново.</div>
|
|
<form class="card form-card form-stack" th:action="@{/login}" method="post">
|
|
<div><label class="label" for="login">Логин</label><input class="input" id="login" name="login" autocomplete="username" th:value="${login}" autofocus required></div>
|
|
<div><label class="label" for="password">Пароль</label><input class="input" id="password" name="password" type="password" autocomplete="current-password" required></div>
|
|
<button class="btn btn-primary" type="submit">Войти</button>
|
|
<input type="hidden" name="_csrf" th:value="${csrfToken}">
|
|
</form>
|
|
</div>
|
|
</div>
|
|
</body>
|
|
</html> |