Sign in

Search issue titles and bodies, change requests and comments. Private repositories you cannot read are not included.

vole
Clone

Read only, no credentials:

https://rodent.software/git/vole.git

Write over SSH with a registered key:

git clone ssh://git@0.0.0.0:2222/vole.git

A free and open-source forge that lives in your Git repo.

Manage accounts from the users directory, not the Admin tab

ea21f923d1fabe3a633e3dc4713ca18d211dbfcb · Keenan Nemetz · 4d ago · parent f11854fe

Manage accounts from the users directory, not the Admin tab

The Accounts tab rendered every account in the roster, which costs more as
an instance grows and duplicates a directory that is already paginated,
searchable, filterable, and sortable. The tab now keeps the invite and bot
forms and points at /u, and an instance admin gets a Manage action on each
directory row that opens the account page.

The Manage column is presentation only: the account page still checks the
instance-admin role, so a non-admin who types its URL gets the usual 404.

Refs #198 (01M6MK0NNZ2XR1D5TQKNWYT4HN).

server/web/admin.go +4−5

@@ -61,10 +61,8 @@ type adminPageView struct {
61 61 RunnerWindow string
62 62 Config *statusConfigView
63 63
64 // Accounts.
65 Users []adminUserRow
66 // AccountSummary is the overview's counts, derived from the same roster the
67 // Accounts tab lists.
64 // AccountSummary is the overview's counts, derived from the roster the users
65 // directory lists.
68 66 AccountSummary adminAccountSummary
69 67
70 68 // Audit log.
@@ -145,7 +143,8 @@ func (w *Web) adminView(r *http.Request, tab, msg string) adminPageView {
145 143 v.Page.Error = msg
146 144 switch tab {
147 145 case "accounts":
148 v.Users = w.adminUserRows()
146 // The tab is the creation forms; an existing account is managed from the
147 // users directory, which is already paginated and searchable.
149 148 case "audit":
150 149 v.Audit = w.auditView(r)
151 150 default: