Files
DoGaMa-serv/internal/web/templates/users.html
T
codex 39a33556d6
CI / validate (pull_request) Successful in 26m0s
chore(code): improve source readability
2026-08-15 23:09:59 +02:00

212 lines
7.5 KiB
HTML

{{define "users.html"}}
<!doctype html>
<html lang="{{.Language}}">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<title>
Users · DoGaMa
</title>
<link rel="stylesheet" href="/static/app.v1.css">
</head>
<body class="app-body">
{{template "sidebar" .}}
<main class="app-main">
<div class="page-heading">
<div>
<p class="eyebrow">
Administration
</p>
<h1>
Users
</h1>
<p>
Create identities, assign global roles and control access to each game server.
</p>
</div>
<a class="button-secondary link-button" href="/administration">
Administration settings
</a>
</div>
<section class="panel settings-section">
<h2>
Create user
</h2>
<form method="post" action="/administration/users">
<input type="hidden" name="csrf_token" value="{{.CSRFToken}}">
<div class="form-grid">
<label>
Username
<input name="username" required maxlength="64" autocomplete="off">
</label>
<label>
Email
<input name="email" type="email" required autocomplete="off">
</label>
<label>
Temporary password
<input name="password" type="password" required minlength="12" autocomplete="new-password">
</label>
<label>
Global role
<select name="role">
<option value="user">
User
</option>
<option value="admin">
Administrator
</option>
</select>
</label>
</div>
<label class="check">
<input type="checkbox" name="disabled" value="yes">
Create disabled
</label>
<button type="submit">
Create user
</button>
</form>
</section>
{{range .Users}}
{{$user := .}}
<section class="panel settings-section">
<div class="page-heading">
<div>
<h2>
{{.Username}}
</h2>
<p>
{{if .Disabled}}
Disabled
{{else}}
Active
{{end}}
·
{{.Role}}
</p>
</div>
</div>
<form method="post" action="/administration/users/{{.ID}}">
<input type="hidden" name="csrf_token" value="{{$.CSRFToken}}">
<div class="form-grid">
<label>
Email
<input name="email" type="email" value="{{.Email}}" required>
</label>
<label>
Global role
<select name="role">
<option value="user"{{if eq .Role "user"}} selected{{end}}>
User
</option>
<option value="admin"{{if eq .Role "admin"}} selected{{end}}>
Administrator
</option>
</select>
</label>
</div>
<label class="check">
<input type="checkbox" name="disabled" value="yes"{{if .Disabled}} checked{{end}}>
Disabled (active sessions are revoked)
</label>
<button type="submit">
Save user
</button>
</form>
{{if eq .Role "user"}}
<h3>
Instance access
</h3>
{{if $.Instances}}
{{range $.Instances}}
{{$instance := .}}
{{$membership := index (index $.UserAccess $user.ID) .ID}}
<details>
<summary>
{{if .Preview.DisplayName}}
{{.Preview.DisplayName}}
{{else}}
{{.ID}}
{{end}}
—
{{if $membership.Role}}
{{$membership.Role}}
{{else}}
No access
{{end}}
</summary>
<form method="post" action="/administration/users/{{$user.ID}}/memberships/{{.ID}}">
<input type="hidden" name="csrf_token" value="{{$.CSRFToken}}">
<label>
Instance role
<select name="role">
<option value="none"{{if not $membership.Role}} selected{{end}}>
No access
</option>
<option value="user"{{if eq $membership.Role "user"}} selected{{end}}>
User
</option>
<option value="manager"{{if eq $membership.Role "manager"}} selected{{end}}>
Manager
</option>
</select>
</label>
<button type="submit">
Save access
</button>
</form>
{{if $membership.Role}}
<div class="permission-grid">
{{range $.Permissions}}
{{$effect := index $membership.Overrides .}}
<form method="post" action="/administration/users/{{$user.ID}}/memberships/{{$instance.ID}}/permissions/{{.}}">
<input type="hidden" name="csrf_token" value="{{$.CSRFToken}}">
<label>
{{.}}
<select name="effect">
<option value="inherit"{{if not $effect}} selected{{end}}>
Role default
</option>
<option value="allow"{{if eq $effect "allow"}} selected{{end}}>
Allow
</option>
<option value="deny"{{if eq $effect "deny"}} selected{{end}}>
Deny
</option>
</select>
</label>
<button type="submit">
Save
</button>
</form>
{{end}}
</div>
{{end}}
</details>
{{end}}
{{else}}
<p>
No game-server instance is currently registered.
</p>
{{end}}
{{else}}
<p>
Administrators have implicit access to every instance.
</p>
{{end}}
</section>
{{else}}
<section class="panel">
<p>
No users found.
</p>
</section>
{{end}}
</main>
<script src="/static/app.v2.js">
</script>
</body>
</html>
{{end}}