Files
licenseServer/templates/auth.html
T
2026-05-05 08:44:55 +00:00

97 lines
5.6 KiB
HTML

{{define "login.html"}}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>LicenseVault — Sign In</title>
<style>
@import url('https://fonts.googleapis.com/css2?family=IBM+Plex+Mono:wght@400;600&family=IBM+Plex+Sans:wght@300;400;500&display=swap');
:root { --bg:#0a0a0f; --surface:#111118; --border:#1e1e2e; --accent:#00ff9d; --danger:#ff3b5c; --text:#e2e2f0; --muted:#555570; }
* { box-sizing:border-box; margin:0; padding:0; }
body { background:var(--bg); color:var(--text); font-family:'IBM Plex Sans',sans-serif; display:flex; align-items:center; justify-content:center; min-height:100vh; }
.login-wrap { width:380px; }
.login-logo { font-family:'IBM Plex Mono',monospace; font-size:18px; font-weight:600; color:var(--accent); text-align:center; margin-bottom:32px; letter-spacing:0.05em; }
.login-logo span { color:var(--muted); }
.card { background:var(--surface); border:1px solid var(--border); border-radius:4px; padding:32px; }
.card-title { font-family:'IBM Plex Mono',monospace; font-size:10px; text-transform:uppercase; letter-spacing:0.12em; color:var(--muted); margin-bottom:24px; }
.form-group { margin-bottom:16px; }
label { display:block; font-family:'IBM Plex Mono',monospace; font-size:10px; text-transform:uppercase; letter-spacing:0.1em; color:var(--muted); margin-bottom:6px; }
input { width:100%; background:var(--bg); border:1px solid var(--border); border-radius:3px; padding:10px 12px; color:var(--text); font-size:13px; font-family:'IBM Plex Sans',sans-serif; outline:none; transition:border-color 0.15s; }
input:focus { border-color:var(--accent); }
.btn { width:100%; padding:11px; background:var(--accent); color:#000; border:none; border-radius:3px; font-size:13px; font-weight:500; cursor:pointer; margin-top:8px; font-family:'IBM Plex Sans',sans-serif; transition:background 0.15s; }
.btn:hover { background:#00e68a; }
.alert { padding:10px 14px; border-radius:3px; margin-bottom:16px; font-size:12px; background:rgba(255,59,92,0.1); border:1px solid rgba(255,59,92,0.3); color:var(--danger); }
</style>
</head>
<body>
<div class="login-wrap">
<div class="login-logo">License<span>Vault</span></div>
<div class="card">
<div class="card-title">Administrator Sign In</div>
{{if .Error}}<div class="alert">{{.Error}}</div>{{end}}
<form method="POST" action="/login">
<div class="form-group">
<label>Email</label>
<input type="email" name="email" autofocus required>
</div>
<div class="form-group">
<label>Password</label>
<input type="password" name="password" required>
</div>
<button type="submit" class="btn">Sign In</button>
</form>
</div>
</div>
</body>
</html>
{{end}}
{{define "setup.html"}}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>LicenseVault — Setup</title>
<style>
@import url('https://fonts.googleapis.com/css2?family=IBM+Plex+Mono:wght@400;600&family=IBM+Plex+Sans:wght@300;400;500&display=swap');
:root { --bg:#0a0a0f; --surface:#111118; --border:#1e1e2e; --accent:#00ff9d; --danger:#ff3b5c; --text:#e2e2f0; --muted:#555570; }
* { box-sizing:border-box; margin:0; padding:0; }
body { background:var(--bg); color:var(--text); font-family:'IBM Plex Sans',sans-serif; display:flex; align-items:center; justify-content:center; min-height:100vh; }
.wrap { width:400px; }
.logo { font-family:'IBM Plex Mono',monospace; font-size:18px; font-weight:600; color:var(--accent); text-align:center; margin-bottom:8px; }
.logo span { color:var(--muted); }
.sub { text-align:center; color:var(--muted); font-size:12px; margin-bottom:32px; }
.card { background:var(--surface); border:1px solid var(--border); border-radius:4px; padding:32px; }
.card-title { font-family:'IBM Plex Mono',monospace; font-size:10px; text-transform:uppercase; letter-spacing:0.12em; color:var(--muted); margin-bottom:24px; }
.form-group { margin-bottom:16px; }
label { display:block; font-family:'IBM Plex Mono',monospace; font-size:10px; text-transform:uppercase; letter-spacing:0.1em; color:var(--muted); margin-bottom:6px; }
input { width:100%; background:var(--bg); border:1px solid var(--border); border-radius:3px; padding:10px 12px; color:var(--text); font-size:13px; outline:none; transition:border-color 0.15s; font-family:'IBM Plex Sans',sans-serif; }
input:focus { border-color:var(--accent); }
.btn { width:100%; padding:11px; background:var(--accent); color:#000; border:none; border-radius:3px; font-size:13px; font-weight:500; cursor:pointer; margin-top:8px; font-family:'IBM Plex Sans',sans-serif; }
.alert { padding:10px 14px; border-radius:3px; margin-bottom:16px; font-size:12px; background:rgba(255,59,92,0.1); border:1px solid rgba(255,59,92,0.3); color:var(--danger); }
</style>
</head>
<body>
<div class="wrap">
<div class="logo">License<span>Vault</span></div>
<div class="sub">First-time setup — create your admin account</div>
<div class="card">
<div class="card-title">Create Admin Account</div>
{{if .Error}}<div class="alert">{{.Error}}</div>{{end}}
<form method="POST" action="/setup">
<div class="form-group">
<label>Email</label>
<input type="email" name="email" autofocus required>
</div>
<div class="form-group">
<label>Password <span style="color:var(--muted)">(min 8 chars)</span></label>
<input type="password" name="password" minlength="8" required>
</div>
<button type="submit" class="btn">Create Account & Continue</button>
</form>
</div>
</div>
</body>
</html>
{{end}}