106 lines
4.4 KiB
HTML
106 lines
4.4 KiB
HTML
{{define "admins.html"}}
|
|
<!doctype html>
|
|
<html lang="de">
|
|
{{template "partials_head" .}}
|
|
<body>
|
|
{{template "partials_nav" .}}
|
|
<main class="page">
|
|
<h1>WebUI Admins</h1>
|
|
{{template "partials_flash" .}}
|
|
|
|
<section class="card">
|
|
<h2>Neuen Admin erstellen</h2>
|
|
<form method="post" action="{{abs "/admins"}}">
|
|
<input type="hidden" name="csrf" value="{{.CSRF}}">
|
|
<input type="hidden" name="action" value="create">
|
|
<div class="grid">
|
|
<div><label>Username</label><input name="username" required></div>
|
|
<div><label>Passwort</label><input name="password" type="password" required></div>
|
|
<div>
|
|
<label>Rolle</label>
|
|
<select name="role">
|
|
<option value="viewer">viewer</option>
|
|
<option value="operator" selected>operator</option>
|
|
<option value="admin">admin</option>
|
|
</select>
|
|
</div>
|
|
</div>
|
|
<button class="btn" type="submit">Erstellen</button>
|
|
</form>
|
|
</section>
|
|
|
|
<section class="card">
|
|
<h2>Liste</h2>
|
|
<table class="table">
|
|
<thead><tr><th>User</th><th>Role</th><th>2FA</th><th>Status</th><th>Aktionen</th></tr></thead>
|
|
<tbody>
|
|
{{range .Admins}}
|
|
<tr>
|
|
<td>{{.Username}}</td>
|
|
<td>{{.Role}}</td>
|
|
<td>{{if .TOTPSecret}}<span class="pill">enabled</span>{{else}}<span class="pill pill-muted">off</span>{{end}}</td>
|
|
<td>{{if .Disabled}}<span class="pill pill-muted">disabled</span>{{else}}<span class="pill">active</span>{{end}}</td>
|
|
<td>
|
|
<form class="inline" method="post" action="{{abs "/admins"}}">
|
|
<input type="hidden" name="csrf" value="{{$.CSRF}}">
|
|
<input type="hidden" name="action" value="set-role">
|
|
<input type="hidden" name="username" value="{{.Username}}">
|
|
<select name="role">
|
|
<option value="viewer">viewer</option>
|
|
<option value="operator">operator</option>
|
|
<option value="admin">admin</option>
|
|
</select>
|
|
<button class="btn btn-ghost" type="submit">Set role</button>
|
|
</form>
|
|
|
|
<form class="inline" method="post" action="{{abs "/admins"}}">
|
|
<input type="hidden" name="csrf" value="{{$.CSRF}}">
|
|
<input type="hidden" name="action" value="set-pass">
|
|
<input type="hidden" name="username" value="{{.Username}}">
|
|
<input name="password" type="password" placeholder="new password">
|
|
<button class="btn btn-ghost" type="submit">Set pass</button>
|
|
</form>
|
|
|
|
<form class="inline" method="post" action="{{abs "/admins"}}">
|
|
<input type="hidden" name="csrf" value="{{$.CSRF}}">
|
|
<input type="hidden" name="action" value="toggle-disable">
|
|
<input type="hidden" name="username" value="{{.Username}}">
|
|
<button class="btn btn-ghost" type="submit">Toggle</button>
|
|
</form>
|
|
|
|
{{if .TOTPSecret}}
|
|
<form class="inline" method="post" action="{{abs "/admins"}}">
|
|
<input type="hidden" name="csrf" value="{{$.CSRF}}">
|
|
<input type="hidden" name="action" value="2fa-disable">
|
|
<input type="hidden" name="username" value="{{.Username}}">
|
|
<button class="btn btn-ghost" type="submit">2FA off</button>
|
|
</form>
|
|
{{else}}
|
|
<form class="inline" method="post" action="{{abs "/admins"}}">
|
|
<input type="hidden" name="csrf" value="{{$.CSRF}}">
|
|
<input type="hidden" name="action" value="2fa-enable">
|
|
<input type="hidden" name="username" value="{{.Username}}">
|
|
<button class="btn btn-ghost" type="submit">2FA on</button>
|
|
</form>
|
|
{{end}}
|
|
|
|
<form class="inline" method="post" action="{{abs "/admins"}}" onsubmit="return confirm('Admin löschen?')">
|
|
<input type="hidden" name="csrf" value="{{$.CSRF}}">
|
|
<input type="hidden" name="action" value="delete">
|
|
<input type="hidden" name="username" value="{{.Username}}">
|
|
<button class="btn btn-danger" type="submit">Delete</button>
|
|
</form>
|
|
</td>
|
|
</tr>
|
|
{{end}}
|
|
</tbody>
|
|
</table>
|
|
<div class="hint">2FA Secret wird als Flash angezeigt. In einer Authenticator-App als TOTP-Secret (base32) hinzufügen.</div>
|
|
</section>
|
|
|
|
</main>
|
|
{{template "partials_footer" .}}
|
|
</body>
|
|
</html>
|
|
{{end}}
|