Files
DoGaMa-serv/internal/web/templates/users.html
T
2026-08-26 22:35:42 +02:00

178 lines
6.6 KiB
HTML

{{define "users-panel"}}
<section class="panel settings-section" id="users">
<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}}
{{end}}