Files
enkly-ai/services/gateway/web/templates/auth.html
enkly 79ce8dc4c0
Some checks failed
Go CI Pipeline / build_and_test (push) Failing after 22m0s
Init Project
2026-10-30 18:06:55 +01:00

246 lines
10 KiB
HTML

{{ define "login" }}
<!DOCTYPE html>
<html lang="{{ .Lang }}">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>{{ t .Lang "auth.login_title" }} — Enkly</title>
<link rel="shortcut icon" type="image/x-icon" href="/static/img/enkly-logo.png" />
<link rel="stylesheet" href="/static/css/style.css" />
</head>
<body>
<div class="auth-shell">
<div class="auth-card">
<div class="brand-lockup">
<img src="/static/img/enkly-logo.png" alt="enkly" class="logo-mark" />
<h1 class="sr-only">enkly</h1>
</div>
{{ template "lang_switcher" (dict "CSRFToken" .CSRFToken "Lang" .Lang "Next" "/login") }}
<h2>{{ t .Lang "auth.login_title" }}</h2>
<p class="auth-subtitle">Welcome back.</p>
{{ if .Error }}<div class="auth-message error">{{ .Error }}</div>{{ end }}
{{ if .Info }}<div class="auth-message info">{{ .Info }}</div>{{ end }}
<form class="auth-form" method="post" action="/login">
<input type="hidden" name="csrf_token" value="{{ .CSRFToken }}" />
<div class="auth-field">
<label for="email">{{ t .Lang "auth.email_label" }}</label>
<input id="email" type="email" name="email" value="{{ .Email }}" autocomplete="email" required autofocus />
</div>
<div class="auth-field">
<label for="password">{{ t .Lang "auth.password_label" }}</label>
<div class="password-field">
<input id="password" type="password" name="password" autocomplete="current-password" required />
</div>
</div>
<button class="auth-btn" type="submit">{{ t .Lang "auth.login_button" }}</button>
</form>
<div class="auth-footer"><a href="/forgot-password">{{ t .Lang "auth.forgot_link" }}</a></div>
<div class="auth-footer">{{ t .Lang "auth.no_account" }} <a href="/signup">{{ t .Lang "auth.signup_link" }}</a></div>
</div>
</div>
<script src="/static/js/password-toggle.js" defer></script>
</body>
</html>
{{ end }}
{{ define "signup" }}
<!DOCTYPE html>
<html lang="{{ .Lang }}">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<link rel="shortcut icon" type="image/x-icon" href="/static/img/enkly-logo.png" />
<title>{{ t .Lang "auth.signup_title" }} — Enkly</title>
<link rel="stylesheet" href="/static/css/style.css" />
</head>
<body>
<div class="auth-shell">
<div class="auth-card">
<div class="brand-lockup">
<img src="/static/img/enkly-logo.png" alt="enkly" class="logo-mark" />
<h1 class="sr-only">enkly</h1>
</div>
{{ template "lang_switcher" (dict "CSRFToken" .CSRFToken "Lang" .Lang "Next" "/signup") }}
<h2>{{ t .Lang "auth.signup_title" }}</h2>
<p class="auth-subtitle">We'll email you a 6-digit code to verify it.</p>
{{ if .Error }}<div class="auth-message error">{{ .Error }}</div>{{ end }}
{{ if .Info }}<div class="auth-message info">{{ .Info }}</div>{{ end }}
<form class="auth-form" method="post" action="/signup">
<input type="hidden" name="csrf_token" value="{{ .CSRFToken }}" />
<div class="auth-field">
<label for="email">{{ t .Lang "auth.email_label" }}</label>
<input id="email" type="email" name="email" value="{{ .Email }}" autocomplete="email" required autofocus />
</div>
<div class="auth-field">
<label for="password">{{ t .Lang "auth.password_label" }}</label>
<div class="password-field">
<input id="password" type="password" name="password" autocomplete="new-password" minlength="8" required />
</div>
</div>
<div class="auth-field">
<label for="password_confirm">{{ t .Lang "auth.confirm_password_label" }}</label>
<div class="password-field">
<input id="password_confirm" type="password" name="password_confirm" autocomplete="new-password" minlength="8" required />
</div>
</div>
<button class="auth-btn" type="submit">{{ t .Lang "auth.signup_button" }}</button>
</form>
<div class="auth-footer">{{ t .Lang "auth.have_account" }} <a href="/login">{{ t .Lang "auth.login_link" }}</a></div>
</div>
</div>
<script src="/static/js/password-toggle.js" defer></script>
</body>
</html>
{{ end }}
{{ define "verify_email" }}
<!DOCTYPE html>
<html lang="{{ .Lang }}">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>{{ t .Lang "auth.verify_title" }} — enkly</title>
<link rel="shortcut icon" type="image/x-icon" href="/static/img/enkly-logo.png" />
<link rel="stylesheet" href="/static/css/style.css" />
</head>
<body>
<div class="auth-shell">
<div class="auth-card">
<div class="brand-lockup">
<img src="/static/img/enkly-logo.png" alt="enkly" class="logo-mark" />
<h1 class="sr-only">enkly</h1>
</div>
{{ template "lang_switcher" (dict "CSRFToken" .CSRFToken "Lang" .Lang "Next" "/verify-email") }}
<h2>{{ t .Lang "auth.verify_title" }}</h2>
<p class="auth-subtitle">Enter the 6-digit code we emailed you.</p>
{{ if .Error }}<div class="auth-message error">{{ .Error }}</div>{{ end }}
{{ if .Info }}<div class="auth-message info">{{ .Info }}</div>{{ end }}
<form class="auth-form" method="post" action="/verify-email">
<input type="hidden" name="csrf_token" value="{{ .CSRFToken }}" />
<div class="auth-field">
<label for="verify-email-address">{{ t .Lang "auth.email_label" }}</label>
<input id="verify-email-address" type="email" name="email" value="{{ .Email }}" autocomplete="email" required />
</div>
<div class="auth-field">
<label for="verify-code">{{ t .Lang "auth.verify_code_label" }}</label>
<input id="verify-code" type="text" name="code" inputmode="numeric" pattern="[0-9]{6}" maxlength="6"
autocomplete="one-time-code" placeholder="123456" required />
</div>
<button class="auth-btn" type="submit">{{ t .Lang "auth.verify_button" }}</button>
</form>
<form class="auth-form auth-inline-form" method="post" action="/resend-verification">
<input type="hidden" name="csrf_token" value="{{ .CSRFToken }}" />
<div class="auth-field">
<label for="resend-email">Didn't get a code?</label>
<input id="resend-email" type="email" name="email" value="{{ .Email }}" autocomplete="email" required />
</div>
<button class="auth-btn auth-btn-secondary" type="submit">{{ t .Lang "auth.resend_link" }}</button>
</form>
<div class="auth-footer">
Already verified? <a href="/login">{{ t .Lang "auth.login_link" }}</a>
</div>
</div>
</div>
</body>
</html>
{{ end }}
{{ define "forgot_password" }}
<!DOCTYPE html>
<html lang="{{ .Lang }}">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>{{ t .Lang "auth.forgot_title" }} — Enkly</title>
<link rel="shortcut icon" type="image/x-icon" href="/static/img/enkly-logo.png" />
<link rel="stylesheet" href="/static/css/style.css" />
</head>
<body>
<div class="auth-shell">
<div class="auth-card">
<div class="brand-lockup">
<img src="/static/img/enkly-logo.png" alt="enkly" class="logo-mark" />
<h1 class="sr-only">enkly</h1>
</div>
{{ template "lang_switcher" (dict "CSRFToken" .CSRFToken "Lang" .Lang "Next" "/forgot-password") }}
<h2>{{ t .Lang "auth.forgot_title" }}</h2>
<p class="auth-subtitle">Enter your email and we'll send you a reset link.</p>
{{ if .Error }}<div class="auth-message error">{{ .Error }}</div>{{ end }}
{{ if .Info }}<div class="auth-message info">{{ .Info }}</div>{{ end }}
<form class="auth-form auth-inline-form" method="post" action="/forgot-password">
<input type="hidden" name="csrf_token" value="{{ .CSRFToken }}" />
<div class="auth-field">
<label for="forgot-email">{{ t .Lang "auth.email_label" }}</label>
<input id="forgot-email" type="email" name="email" value="{{ .Email }}" autocomplete="email" required autofocus />
</div>
<button class="auth-btn" type="submit">{{ t .Lang "auth.forgot_button" }}</button>
</form>
<div class="auth-footer"><a href="/login">{{ t .Lang "auth.back_to_login" }}</a></div>
</div>
</div>
</body>
</html>
{{ end }}
{{ define "reset_password" }}
<!DOCTYPE html>
<html lang="{{ .Lang }}">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>{{ t .Lang "auth.reset_title" }} — enkly</title>
<link rel="stylesheet" href="/static/css/style.css" />
</head>
<body>
<div class="auth-shell">
<div class="auth-card">
<div class="brand-lockup">
<img src="/static/img/enkly-logo.png" alt="enkly" class="logo-mark" />
<h1 class="sr-only">enkly</h1>
</div>
{{ template "lang_switcher" (dict "CSRFToken" .CSRFToken "Lang" .Lang "Next" "/reset-password") }}
<h2>{{ t .Lang "auth.reset_title" }}</h2>
<p class="auth-subtitle">Choose a new password for your account.</p>
{{ if .Error }}<div class="auth-message error">{{ .Error }}</div>{{ end }}
{{ if .Info }}<div class="auth-message info">{{ .Info }}</div>{{ end }}
<form class="auth-form" method="post" action="/reset-password">
<input type="hidden" name="csrf_token" value="{{ .CSRFToken }}" />
<input type="hidden" name="token" value="{{ .Token }}" />
<div class="auth-field">
<label for="password">New password</label>
<div class="password-field">
<input id="password" type="password" name="password" autocomplete="new-password" minlength="8" required autofocus />
</div>
</div>
<div class="auth-field">
<label for="password_confirm">{{ t .Lang "auth.confirm_password_label" }}</label>
<div class="password-field">
<input id="password_confirm" type="password" name="password_confirm" autocomplete="new-password" minlength="8" required />
</div>
</div>
<button class="auth-btn" type="submit">{{ t .Lang "auth.reset_button" }}</button>
</form>
<div class="auth-footer"><a href="/login">{{ t .Lang "auth.back_to_login" }}</a></div>
</div>
</div>
<script src="/static/js/password-toggle.js" defer></script>
</body>
</html>
{{ end }}