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 the instance access editor and repository danger zone

2973f7274b3c569de6018239ac8c90df98c38a1b · Keenan Nemetz · 15d ago · parent 1948358f

Add the instance access editor and repository danger zone

Instance admins get /admin: a repository list and a per-repository ACL editor for
default role, per-account roles, protected branches, approvals, checks, and
runners. The editor reads repositories directly instead of through the read
rule, because an instance admin may not have a role in the repository they are
administering. Everything else still hides behind a 404.

Repository admins get rename and delete on the settings page behind typed
confirmation. Both go through the instance operations that also move the index,
queue, LFS namespace, and locks, carry CSRF, and are audited.

server/web/web.go +7

@@ -44,6 +44,10 @@ type Web struct {
44 44 // AllowCI is the server's queue-side operation: record a maintainer's approval
45 45 // for one contributor tip and enqueue it. The web owns the form and ACL check.
46 46 AllowCI func(repo, ref, sha, approver string) error
47 // RenameRepo and DeleteRepo are the instance operations that also move the
48 // index, queue, LFS namespace, and locks. The web owns the form and ACL check.
49 RenameRepo func(oldName, newName string) error
50 DeleteRepo func(name string) error
47 51 Logger func(format string, args ...any)
48 52
49 53 // sem bounds compressed archive streams; see releases.go.
@@ -152,6 +156,9 @@ type Page struct {
152 156 // CanAdmin reports whether the viewer may administer the repository named in
153 157 // the request path. The repository header uses it to show Settings.
154 158 CanAdmin bool
159 // InstanceAdmin reports whether the viewer may use the instance-wide admin
160 // surface. The global bar uses it to show Admin.
161 InstanceAdmin bool
155 162 }
156 163
157 164 // canRead reports whether the viewer may see the repository. An anonymous