- Created .env.example for environment variable configuration. - Added .gitignore to exclude .env files. - Introduced docker-compose files for Keycloak and Postgres services. - Implemented custom Keycloak theme 'drill-luxe' with associated templates and styles. - Updated README with deployment instructions and repository details.
110 lines
4.4 KiB
Plaintext
110 lines
4.4 KiB
Plaintext
<!DOCTYPE html>
|
||
<html class="${properties.kcHtmlClass!}" lang="${lang}">
|
||
<head>
|
||
<meta charset="utf-8">
|
||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
|
||
<meta name="robots" content="noindex, nofollow" />
|
||
<meta name="viewport" content="width=device-width,initial-scale=1" />
|
||
<title>Drill View Login</title>
|
||
<link rel="icon" href="data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 120 120'%3E%3Crect width='120' height='120' rx='28' fill='%230f1115'/%3E%3Cpath d='M32 89L54 24h12l22 65h-12l-4-13H48l-4 13H32zm19-23h18L60 38 51 66z' fill='%23d4a574'/%3E%3C/svg%3E" />
|
||
<#if properties.styles?has_content>
|
||
<#list properties.styles?split(' ') as style>
|
||
<link href="${url.resourcesPath}/${style}" rel="stylesheet" />
|
||
</#list>
|
||
</#if>
|
||
</head>
|
||
<body class="drill-login">
|
||
<main class="drill-login__shell">
|
||
<section class="drill-login__brand">
|
||
<div class="drill-login__brand-mark">D</div>
|
||
<div class="drill-login__brand-copy">
|
||
<span class="drill-login__eyebrow">Greact Drill</span>
|
||
<h1>Премиальный доступ к Drill View</h1>
|
||
<p>
|
||
Единая точка входа для операторов, инженеров и аналитиков. Безопасный вход в среду мониторинга,
|
||
документов и схем в фирменной бронзово-графитовой палитре Drill.
|
||
</p>
|
||
</div>
|
||
<div class="drill-login__feature-grid">
|
||
<article>
|
||
<span>01</span>
|
||
<strong>Единая сессия</strong>
|
||
<p>Один realm Keycloak для Drill View, Cloud API и встроенных приложений.</p>
|
||
</article>
|
||
<article>
|
||
<span>02</span>
|
||
<strong>Защищённый доступ</strong>
|
||
<p>Токены проверяются на backend, а браузер получает только актуальную сессию.</p>
|
||
</article>
|
||
<article>
|
||
<span>03</span>
|
||
<strong>Фирменный стиль</strong>
|
||
<p>Визуальная система синхронизирована с интерфейсом Drill View.</p>
|
||
</article>
|
||
</div>
|
||
</section>
|
||
|
||
<section class="drill-login__panel">
|
||
<div class="drill-login__panel-head">
|
||
<span class="drill-login__eyebrow">Secure Sign In</span>
|
||
<h2>Вход в систему</h2>
|
||
<p>Используйте корпоративную учётную запись Keycloak.</p>
|
||
</div>
|
||
|
||
<#if message?has_content>
|
||
<div class="drill-login__alert drill-login__alert--${message.type}">
|
||
${kcSanitize(message.summary)?no_esc}
|
||
</div>
|
||
</#if>
|
||
|
||
<form id="kc-form-login" class="drill-login__form" action="${url.loginAction}" method="post">
|
||
<div class="drill-login__field">
|
||
<label for="username">Логин</label>
|
||
<input
|
||
id="username"
|
||
name="username"
|
||
type="text"
|
||
value="${(login.username!'')}"
|
||
autocomplete="username"
|
||
autofocus
|
||
placeholder="Введите логин"
|
||
/>
|
||
</div>
|
||
|
||
<div class="drill-login__field">
|
||
<div class="drill-login__field-row">
|
||
<label for="password">Пароль</label>
|
||
<#if realm.resetPasswordAllowed>
|
||
<a href="${url.loginResetCredentialsUrl}">Не удаётся войти?</a>
|
||
</#if>
|
||
</div>
|
||
<input
|
||
id="password"
|
||
name="password"
|
||
type="password"
|
||
autocomplete="current-password"
|
||
placeholder="Введите пароль"
|
||
/>
|
||
</div>
|
||
|
||
<#if realm.rememberMe && !usernameEditDisabled??>
|
||
<label class="drill-login__remember">
|
||
<input id="rememberMe" name="rememberMe" type="checkbox" <#if login.rememberMe??>checked</#if> />
|
||
<span>Запомнить меня</span>
|
||
</label>
|
||
</#if>
|
||
|
||
<button class="drill-login__submit" name="login" id="kc-login" type="submit">
|
||
<span>Войти в Drill View</span>
|
||
</button>
|
||
</form>
|
||
|
||
<div class="drill-login__footer">
|
||
<span>Realm: ${realm.name}</span>
|
||
<span>Client: ${client.clientId!'drill-view-frontend'}</span>
|
||
</div>
|
||
</section>
|
||
</main>
|
||
</body>
|
||
</html>
|