diff options
| author | gramanas <grm@eyesin.space> | 2026-09-12 11:24:17 +0300 |
|---|---|---|
| committer | gramanas <grm@eyesin.space> | 2026-09-12 11:24:17 +0300 |
| commit | 3eb04b1a2bdf9e53231fe862cfd76327371a9741 (patch) | |
| tree | b38b2d82a47233fd8e0bb18c59e4a8f3dd2412d7 /internal/web/templates/admin/index.html | |
| download | blogspace-3eb04b1a2bdf9e53231fe862cfd76327371a9741.tar.gz blogspace-3eb04b1a2bdf9e53231fe862cfd76327371a9741.tar.bz2 blogspace-3eb04b1a2bdf9e53231fe862cfd76327371a9741.zip | |
Initial multi-tenant blog host
Go + Postgres application serving a management dashboard on the base
domain and one public blog per subdomain. Markdown posts organised in
pages, form-based theme customisation, image uploads stored in Postgres,
JWT cookie sessions with CSRF, superadmin user management, RSS feeds.
Docker/compose deployment and a Makefile-driven dev environment with
seed data.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Sd8UPWrvyYCLj97JexNw3A
Diffstat (limited to 'internal/web/templates/admin/index.html')
| -rw-r--r-- | internal/web/templates/admin/index.html | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/internal/web/templates/admin/index.html b/internal/web/templates/admin/index.html new file mode 100644 index 0000000..c74d426 --- /dev/null +++ b/internal/web/templates/admin/index.html @@ -0,0 +1,28 @@ +{{define "title"}}Admin · Blogspace{{end}} +{{define "content"}} +<h1>Users & blogs <a class="btn small" href="/admin/users/new">+ New blogger</a></h1> +<div class="card"> +<table> + <tr><th>User</th><th>Role</th><th>Blog</th><th>Since</th><th>Actions</th></tr> + {{range .Data.users}}<tr{{if .Disabled}} class="disabled"{{end}}> + <td>{{.Username}}{{if .Disabled}} <span class="tag">disabled</span>{{end}}</td> + <td>{{.Role}}</td> + <td>{{if .Subdomain}}<a href="/b/{{deref .Subdomain}}/">{{deref .BlogTitle}}</a> <a href="{{$.Data.cfg.BlogURL (deref .Subdomain)}}" target="_blank" class="muted">{{deref .Subdomain}} ↗</a>{{else}}<span class="muted">—</span>{{end}}</td> + <td class="nowrap">{{date .CreatedAt}}</td> + <td class="nowrap"> + {{if ne .ID $.User.ID}} + <details class="inline"><summary class="mini">reset password</summary> + <form method="post" action="/admin/users/{{.ID}}/reset-password" class="inline"> + <input type="hidden" name="_csrf" value="{{$.CSRF}}"> + <input type="password" name="password" placeholder="new password" minlength="8" required size="14"> + <button class="mini">Set</button> + </form></details> + {{if .Disabled}}<form method="post" action="/admin/users/{{.ID}}/enable" class="inline"><input type="hidden" name="_csrf" value="{{$.CSRF}}"><button class="mini">enable</button></form> + {{else}}<form method="post" action="/admin/users/{{.ID}}/disable" class="inline"><input type="hidden" name="_csrf" value="{{$.CSRF}}"><button class="mini">disable</button></form>{{end}} + <a class="danger" href="/admin/users/{{.ID}}/delete">delete</a> + {{else}}<span class="muted">(you)</span>{{end}} + </td> + </tr>{{end}} +</table> +</div> +{{end}} |
