{{define "title"}}Admin — Approovia Portal{{end}}
{{define "content"}}
{{$data := .Data}}
{{if eq $data.Tab "users"}}Users
{{else if eq $data.Tab "playbooks"}}Playbooks
{{else if eq $data.Tab "wireguard"}}WireGuard Peers
{{else if eq $data.Tab "ssh"}}SSH Keys
{{else}}Admin{{end}}
{{if eq $data.Tab "playbooks"}}
Ansible Playbooks
Trigger a playbook run via Semaphore. Status updates automatically.
| Playbook |
Action |
Status |
{{range $data.Playbooks}}
| {{.Name}} |
|
— |
{{else}}
| No playbooks configured. |
{{end}}
{{end}}
{{if eq $data.Tab "users"}}
| Name |
Email |
Status |
{{range $data.Users}}
{{template "admin-user-row" .}}
|
{{else}}
| No users yet. |
{{end}}
{{end}}
{{if eq $data.Tab "wireguard"}}
| Owner |
Key Name |
Pubkey |
IPv4 |
IPv6 |
Slug |
Status |
Last Handshake |
|
{{range $data.WGPeers}}
|
{{if .OwnerID}}
{{if .OwnerName}}{{.OwnerName}}{{end}}
{{if .OwnerEmail}}{{.OwnerEmail}}{{end}}
{{else}}
unassigned
{{end}}
|
{{.KeyName}} |
{{.PubkeyShort}} |
{{if .IPv4}}{{.IPv4}}{{else}}—{{end}} |
{{if .IPv6}}{{.IPv6}}{{else}}—{{end}} |
{{.Slug}} |
{{if .Connected}}
connected
{{else}}
offline
{{end}}
|
{{timeSince .LastHandshake}} |
{{if eq .OwnerID 0}}
{{end}}
|
{{else}}
| No active WireGuard peers. |
{{end}}
{{end}}
{{if eq $data.Tab "ssh"}}
| Owner |
Key Name |
Fingerprint |
Added |
{{range $data.SSHKeys}}
|
{{if .OwnerEmail}}{{.OwnerEmail}}{{else}}{{.OwnerName}}{{end}}
|
{{.KeyName}} |
{{.Fingerprint}} |
{{formatTime .Created}} |
{{else}}
| No SSH keys registered. |
{{end}}
{{end}}
{{end}}
{{define "admin-user-row-cells"}}
{{if .Name}}{{.Name}}{{else}}—{{end}}
|
{{if .Email}}{{.Email}}{{else}}—{{end}}
|
{{.Status}} |
{{end}}
{{define "admin-user-row"}}
{{template "admin-user-row-cells" .}}
{{end}}
{{define "admin-user-row-oob"}}
{{template "admin-user-row-cells" .}}
{{end}}
{{define "admin-user-keys"}}
{{/* Tab bar */}}
{{/* General pane */}}
Email
{{if .Email}}{{.Email}}{{else}}—{{end}}
{{if eq .Status "active"}}
{{else}}
{{end}}
{{/* SSH pane */}}
{{/* WireGuard pane */}}
{{range .WGKeys}}
{{.Name}}
{{if .Connected}}connected{{else}}offline{{end}}
{{timeSince .LastHandshake}}
IPv4{{if .IPv4}}{{.IPv4}}{{else}}—{{end}}
IPv6{{if .IPv6}}{{.IPv6}}{{else}}—{{end}}
Public key{{.Pubkey}}
{{if .PSK}}PSK{{.PSK}}{{end}}
{{else}}
No WireGuard tunnels.
{{end}}
{{end}}