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.

Fold admin work into repository settings and a Users page

9579c1f976254fdeb2ec73d4016db5b25c7921c1 · Keenan Nemetz · 14d ago · parent 381d6aac

Fold admin work into repository settings and a Users page

Remove the combined /admin tabs. Per-repository access rules now live on the repository's Settings page, visible to instance admins while repository details and the danger zone stay with repository admins. User management moves to /users, linked from the top navigation only for instance admins, and repository creation moves to /repos/new. Align the invite, danger-zone, and settings forms with the shared card-and-actions layout, and make settings section headings consistent.

server/web/admin_users.go +4−4

@@ -150,7 +150,7 @@ func (w *Web) SetAdminUser(rw http.ResponseWriter, r *http.Request) {
150 150 w.render(rw, "admin_user", w.adminUserView(r, acct, err.Error()), http.StatusBadRequest)
151 151 return
152 152 }
153 http.Redirect(rw, r, "/admin/users/"+acct.Name, http.StatusSeeOther)
153 http.Redirect(rw, r, "/users/"+acct.Name, http.StatusSeeOther)
154 154 }
155 155
156 156 func (w *Web) RetireAdminUser(rw http.ResponseWriter, r *http.Request) {
@@ -166,7 +166,7 @@ func (w *Web) RetireAdminUser(rw http.ResponseWriter, r *http.Request) {
166 166 w.render(rw, "admin_user", w.adminUserView(r, acct, err.Error()), http.StatusBadRequest)
167 167 return
168 168 }
169 http.Redirect(rw, r, "/admin/users", http.StatusSeeOther)
169 http.Redirect(rw, r, "/users", http.StatusSeeOther)
170 170 }
171 171
172 172 func (w *Web) InviteAdminUser(rw http.ResponseWriter, r *http.Request) {
@@ -196,7 +196,7 @@ func (w *Web) RevokeAdminUserSessions(rw http.ResponseWriter, r *http.Request) {
196 196 w.serverError(rw, r, "cannot revoke sessions: "+err.Error())
197 197 return
198 198 }
199 http.Redirect(rw, r, "/admin/users/"+acct.Name, http.StatusSeeOther)
199 http.Redirect(rw, r, "/users/"+acct.Name, http.StatusSeeOther)
200 200 }
201 201
202 202 func (w *Web) RemoveAdminUserKey(rw http.ResponseWriter, r *http.Request) {
@@ -213,5 +213,5 @@ func (w *Web) RemoveAdminUserKey(rw http.ResponseWriter, r *http.Request) {
213 213 w.render(rw, "admin_user", w.adminUserView(r, acct, err.Error()), http.StatusBadRequest)
214 214 return
215 215 }
216 http.Redirect(rw, r, "/admin/users/"+acct.Name, http.StatusSeeOther)
216 http.Redirect(rw, r, "/users/"+acct.Name, http.StatusSeeOther)
217 217 }