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.

Let instance admins read every repository

381d6aac38ab785d879fa82a6b8397ce6f543bab · Keenan Nemetz · 14d ago · parent 074ae160

Let instance admins read every repository

An instance administrator can already rewrite any repository's ACL, so hiding its content only hides what they govern. Raise them to at least read in the web and SSH paths, preserving any higher explicit role, and enforce the read rule on SSH upload-pack, where any authenticated key could previously clone a private repository by name. Anonymous HTTP clone still answers 404 because it carries no identity.

Group the admin surface into Repositories and Users tabs with a shared header, and teach Page.Section to mark the active tab.

forge/access/acl.go +12

@@ -197,6 +197,18 @@ func (a *ACL) RoleFor(user string) Role {
197 197 }
198 198 func (a *ACL) Can(user string, need Role) bool { return a.RoleFor(user).AtLeast(need) }
199 199
200 // EffectiveRole is RoleFor with one policy overlay: an instance administrator may
201 // read every repository. They can already rewrite any repository's rules, so
202 // hiding the content would hide the thing they govern without protecting it. An
203 // explicit role above read is kept; this only raises none and read to read.
204 func (a *ACL) EffectiveRole(user string, instanceAdmin bool) Role {
205 role := a.RoleFor(user)
206 if user != "" && instanceAdmin && role < Read {
207 return Read
208 }
209 return role
210 }
211
200 212 // ContributorBranchPrefix is the only branch namespace a contributor may push.
201 213 // The account name is in the path: it is chosen by the person, fixed at creation
202 214 // and never reissued, so one contributor cannot move another's branch and a