Hub: accounts, IMVU linking by tagline, proxy sign-in, presence, console
CI / test (push) Failing after 42s
CI / test (push) Failing after 42s
People sign up on the website and link IMVU accounts by putting a code in the account's tagline, which the hub reads from IMVU's public API (the most recent proof wins; link caps per person). IMVU's age verification or Access Pass make an account adult. T5DE's proxy signs in with a device code and keeps a WebSocket open, reporting the IMVU account in use and the community products it wears; /online shows those who opted in. Moderators get a console: who's online, people, link caps, bans, roles, and the audit log. Tests run the website and API against an embedded Postgres and a fake IMVU API. Co-Authored-By: Claude Opus 5.5 <[email protected]>
This commit is contained in:
1 parent
54e569bea3
commit
b9dc3f0ec1
36 files changed
+3548
-5
No files matched your search
@@ -0,0 +1,45 @@
|
||||
{{define "title"}}Console{{end}}
|
||||
{{define "content"}}
|
||||
<h1>Console</h1>
|
||||
<p class="lead">Moderation. <a href="/console/people">People</a></p>
|
||||
<div class="grid">
|
||||
<div class="panel"><h2>People</h2><div class="stat">{{.Counts.People}}</div><p class="muted small">accounts</p></div>
|
||||
<div class="panel"><h2>IMVU accounts</h2><div class="stat">{{.Counts.Links}}</div><p class="muted small">linked</p></div>
|
||||
<div class="panel"><h2>Computers</h2><div class="stat">{{.Counts.Signins}}</div><p class="muted small">signed in</p></div>
|
||||
</div>
|
||||
<div class="panel" hx-get="/console/online" hx-trigger="every 5s" hx-swap="innerHTML">
|
||||
{{template "console-online" .}}
|
||||
</div>
|
||||
<div class="panel">
|
||||
<h2>Audit log</h2>
|
||||
<table>
|
||||
<tr><th>When</th><th>Who</th><th>What</th><th>Target</th><th>Detail</th></tr>
|
||||
{{range .Audit}}
|
||||
<tr><td class="muted">{{date .At}}</td><td>{{if .Actor}}{{.Actor}}{{else}}<span class="muted">hub</span>{{end}}</td><td>{{.Action}}</td><td>{{.Target}}</td>
|
||||
<td class="muted small">{{range $k, $v := .Detail}}{{$k}}: {{$v}} {{end}}</td></tr>
|
||||
{{else}}
|
||||
<tr><td colspan="5" class="empty">Nothing yet.</td></tr>
|
||||
{{end}}
|
||||
</table>
|
||||
</div>
|
||||
{{end}}
|
||||
|
||||
{{define "console-online"}}
|
||||
<h2>Online now <span class="count">{{len .Online}} IMVU accounts, {{.Connections}} connections</span></h2>
|
||||
{{range .Online}}
|
||||
<div class="account-row">
|
||||
<div class="avatar">{{slice .Link.Username 0 1 | upper}}</div>
|
||||
<div class="account-main">
|
||||
<div class="account-name">{{.Link.Username}} <a class="small" href="/console/people/{{.Online.PersonID}}">person</a></div>
|
||||
<div class="tags">
|
||||
<span class="tag online">since {{ago .Online.Since}}</span>
|
||||
{{if .Hidden}}<span class="tag">presence hidden</span>{{end}}
|
||||
{{if .Link.Adult}}<span class="tag adult">adult</span>{{end}}
|
||||
</div>
|
||||
{{if .Online.Outfit}}<div class="outfit">{{range .Online.Outfit}}<span class="item">{{.Name}}</span>{{end}}</div>{{end}}
|
||||
</div>
|
||||
</div>
|
||||
{{else}}
|
||||
<p class="empty">Nobody.</p>
|
||||
{{end}}
|
||||
{{end}}
|
||||
Reference in new issue
Block a user