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/vole.git

Write over SSH with a registered key:

git clone ssh://git@rodent.software:2222/vole.git

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

Add instance-wide roles and refine access UI

5b814e9958090cfd1fa826efb2d375bf613547c1 · Keenan Nemetz · 14d ago · parent 9579c1f9

Add instance-wide roles and refine access UI

Instance roles now live on accounts, apply to public repositories, and the Admin role is the unified instance-admin permission with access to every repository. Repository ACLs can raise an instance role but not lower it.

Adds role assignment to the users UI and CLI, open-registration role config, a reusable role picker, and separates adding a repository account from saving access rules.

server/server.go +2−1

@@ -183,7 +183,7 @@ func (s *Server) routes() *http.ServeMux {
183 183 mux.HandleFunc("GET /users", w.AdminUsersPage)
184 184 mux.HandleFunc("POST /users", w.CreateAdminUser)
185 185 mux.HandleFunc("GET /users/{name}", w.AdminUserPage)
186 mux.HandleFunc("POST /users/{name}/admin", w.SetAdminUser)
186 mux.HandleFunc("POST /users/{name}/role", w.SetAdminUserRole)
187 187 mux.HandleFunc("POST /users/{name}/retire", w.RetireAdminUser)
188 188 mux.HandleFunc("POST /users/{name}/invite", w.InviteAdminUser)
189 189 mux.HandleFunc("POST /users/{name}/sessions/revoke", w.RevokeAdminUserSessions)
@@ -232,6 +232,7 @@ func (s *Server) routes() *http.ServeMux {
232 232 mux.HandleFunc("GET /r/{name}/settings", w.SettingsPage)
233 233 mux.HandleFunc("POST /r/{name}/settings", w.SaveSettings)
234 234 mux.HandleFunc("POST /r/{name}/settings/access", w.SaveRepositoryAccess)
235 mux.HandleFunc("POST /r/{name}/settings/access/add", w.AddRepositoryAccess)
235 236 mux.HandleFunc("POST /r/{name}/settings/rename", w.RenameRepository)
236 237 mux.HandleFunc("POST /r/{name}/settings/delete", w.DeleteRepository)
237 238 mux.HandleFunc("GET /r/{name}/releases", w.Releases)