Add initial Keycloak setup with custom theme and Docker configuration
- 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.
This commit is contained in:
109
keycloak/themes/drill-luxe/login/login.ftl
Normal file
109
keycloak/themes/drill-luxe/login/login.ftl
Normal file
@@ -0,0 +1,109 @@
|
||||
<!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>
|
||||
Reference in New Issue
Block a user