2026-03-13 00:18:14 +00:00
|
|
|
{% extends "base.html" %}
|
|
|
|
|
{% block title %}Login — {{ slug }} — Ontoref{% endblock title %}
|
|
|
|
|
{% block content %}
|
|
|
|
|
<div class="flex justify-center pt-16">
|
|
|
|
|
<div class="card bg-base-200 shadow-xl w-full max-w-sm">
|
|
|
|
|
<div class="card-body gap-4">
|
|
|
|
|
<div class="text-center">
|
2026-03-16 01:48:17 +00:00
|
|
|
{% if logo or logo_dark %}
|
|
|
|
|
<div class="flex justify-center mb-2">
|
|
|
|
|
{% if logo %}<img id="login-logo-light" src="{{ logo }}" alt="{{ slug }}" class="h-14 max-w-[12rem] object-contain">{% endif %}
|
|
|
|
|
{% if logo_dark %}<img id="login-logo-dark" src="{{ logo_dark }}" alt="{{ slug }}" class="h-14 max-w-[12rem] object-contain hidden">{% endif %}
|
|
|
|
|
</div>
|
|
|
|
|
{% else %}
|
2026-03-13 00:18:14 +00:00
|
|
|
<h1 class="text-2xl font-bold"><span style="color:#C0CCD8;">onto</span><span style="color:#E8A838;">ref</span></h1>
|
2026-03-16 01:48:17 +00:00
|
|
|
{% endif %}
|
2026-03-13 00:18:14 +00:00
|
|
|
<p class="text-base-content/60 text-sm mt-1 font-mono">{{ slug }}</p>
|
|
|
|
|
</div>
|
|
|
|
|
{% if error %}
|
|
|
|
|
<div class="alert alert-error text-sm py-2">
|
|
|
|
|
<svg class="w-4 h-4 flex-shrink-0" fill="none" viewBox="0 0 24 24" stroke="currentColor">
|
|
|
|
|
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2"
|
|
|
|
|
d="M12 9v2m0 4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z"/>
|
|
|
|
|
</svg>
|
|
|
|
|
Invalid key.
|
|
|
|
|
</div>
|
|
|
|
|
{% endif %}
|
|
|
|
|
<form method="POST" action="/ui/{{ slug }}/login" class="flex flex-col gap-3">
|
|
|
|
|
<div class="form-control">
|
|
|
|
|
<label class="label pb-1">
|
|
|
|
|
<span class="label-text text-xs uppercase tracking-wider text-base-content/50">Access key</span>
|
|
|
|
|
</label>
|
|
|
|
|
<input type="password" name="key" autofocus
|
|
|
|
|
class="input input-bordered input-sm font-mono"
|
|
|
|
|
placeholder="••••••••••••">
|
|
|
|
|
</div>
|
|
|
|
|
<button type="submit" class="btn btn-primary btn-sm mt-1">Enter</button>
|
|
|
|
|
</form>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
{% endblock content %}
|
2026-03-16 01:48:17 +00:00
|
|
|
{% block scripts %}
|
|
|
|
|
{% if logo or logo_dark %}
|
|
|
|
|
<script>
|
|
|
|
|
(function () {
|
|
|
|
|
var light = document.getElementById("login-logo-light");
|
|
|
|
|
var dark = document.getElementById("login-logo-dark");
|
|
|
|
|
function apply(theme) {
|
|
|
|
|
if (!light && !dark) return;
|
|
|
|
|
if (light && !dark) { light.classList.remove("hidden"); return; }
|
|
|
|
|
var isDark = theme === "dark";
|
|
|
|
|
if (light) light.classList.toggle("hidden", isDark);
|
|
|
|
|
if (dark) dark.classList.toggle("hidden", !isDark);
|
|
|
|
|
}
|
|
|
|
|
apply(document.documentElement.getAttribute("data-theme") || "dark");
|
|
|
|
|
new MutationObserver(function(ms) {
|
|
|
|
|
ms.forEach(function(m) {
|
|
|
|
|
if (m.attributeName === "data-theme")
|
|
|
|
|
apply(document.documentElement.getAttribute("data-theme"));
|
|
|
|
|
});
|
|
|
|
|
}).observe(document.documentElement, { attributes: true });
|
|
|
|
|
})();
|
|
|
|
|
</script>
|
|
|
|
|
{% endif %}
|
|
|
|
|
{% endblock scripts %}
|