ca3dbb29300bfdb5161c2afeb948fabd42b83de2

Author
Ayman Bagabas <ayman.bagabas@gmail.com>
Committer
Ayman Bagabas <ayman.bagabas@gmail.com>
Date

Message

fix: restrict access to private repos unless admin or collab

don't override "config" repo private property

Diff

 1diff --git a/internal/config/git.go b/internal/config/git.go
 2index 9e6c8954018e2d889b1ce961fc3f854e6e73cb94..0d96f95db0e056d69d6097e3033a369cf501f66f 100644
 3--- a/internal/config/git.go
 4+++ b/internal/config/git.go
 5@@ -55,9 +55,6 @@ func (cfg *Config) PublicKeyHandler(ctx ssh.Context, pk ssh.PublicKey) bool {
 6 
 7 func (cfg *Config) accessForKey(repo string, pk ssh.PublicKey) gm.AccessLevel {
 8 	private := cfg.isPrivate(repo)
 9-	if repo == "config" {
10-		private = true
11-	}
12 	for _, u := range cfg.Users {
13 		for _, k := range u.PublicKeys {
14 			apk, _, _, _, err := ssh.ParseAuthorizedKey([]byte(strings.TrimSpace(k)))
15@@ -80,7 +77,7 @@ func (cfg *Config) accessForKey(repo string, pk ssh.PublicKey) gm.AccessLevel {
16 			}
17 		}
18 	}
19-	if private && (cfg.AnonAccess != "read-write") {
20+	if private && len(cfg.Users) > 0 {
21 		return gm.NoAccess
22 	}
23 	switch cfg.AnonAccess {