Member invites, gallery resync, content and operator docs
- Invite flow: admin issue/revoke on join requests, public single-use claim links (hash-only tokens, 7-day expiry, no state reveal), claim creates the Member account and marks the request accepted - Gallery: admin status page plus resync endpoint; sync refreshes thumbnails whose content changed; tools/gallery contract and checker - Docs: public content page, admin-only operator runbook, api.md invite/gallery sections, all routes in the live API docs, docs reachability gate test - Screenshots cover the new pages; version 1.0.18
This commit is contained in:
@@ -7,6 +7,8 @@
|
||||
<div class="stat-card"><span class="value">{{ open_joins }}</span><span class="name">Open join requests</span></div>
|
||||
<div class="stat-card"><span class="value">{{ user_count }}</span><span class="name">Accounts</span></div>
|
||||
<div class="stat-card"><span class="value">{{ deleted_count }}</span><span class="name">In trash</span></div>
|
||||
<div class="stat-card"><span class="value">{{ flyer_count }}</span><span class="name">Flyers</span></div>
|
||||
<div class="stat-card"><span class="value">{{ meme_count }}</span><span class="name">Memes</span></div>
|
||||
</div>
|
||||
<div class="actions"><a class="button" href="/admin/posts/new">New post</a><a class="button ghost" href="/admin/joins">View join requests</a></div>
|
||||
<div class="actions"><a class="button" href="/admin/posts/new">New post</a><a class="button ghost" href="/admin/joins">View join requests</a><a class="button ghost" href="/admin/gallery">Gallery</a></div>
|
||||
{% endblock %}
|
||||
|
||||
Reference in New Issue
Block a user