Przeglądaj źródła

[annex] fix anon user bug

cgars 8 lat temu
rodzic
commit
0544d13ba8
1 zmienionych plików z 13 dodań i 5 usunięć
  1. 13 5
      cmd/serv.go

+ 13 - 5
cmd/serv.go

@@ -198,6 +198,12 @@ func runServ(c *cli.Context) error {
 		fail("Invalid key ID", "Invalid key ID '%s': %v", c.Args()[0], err)
 	}
 
+	if us, err := models.GetUserByKeyID(key.ID); err == nil {
+		user = us
+	} else {
+		fail("Key Error", "Cannot find key %v", err)
+	}
+
 	if requestMode == models.ACCESS_MODE_WRITE || repo.IsPrivate {
 		// Check deploy key or user key.
 		if key.IsDeployKey() {
@@ -275,7 +281,7 @@ func runServ(c *cli.Context) error {
 
 }
 
-func runGit(cmd [] string, requestMode models.AccessMode, user *models.User, owner *models.User,
+func runGit(cmd []string, requestMode models.AccessMode, user *models.User, owner *models.User,
 	repo *models.Repository) error {
 	log.Info("will exectute:%s", cmd)
 	gitCmd := exec.Command(cmd[0], cmd[1:]...)
@@ -317,11 +323,13 @@ func secureGitAnnex(path string, user *models.User, repo *models.Repository) err
 	if err != nil {
 		return fmt.Errorf("ERROR: Could set annex shell directory.")
 	}
-	mode, err := models.AccessLevel(user.ID, repo)
-	if err != nil {
-		fail("Internal error", "Fail to check access: %v", err)
+	mode := models.ACCESS_MODE_NONE
+	if user != nil {
+		mode, err = models.AccessLevel(user.ID, repo)
+		if err != nil {
+			fail("Internal error", "Fail to check access: %v", err)
+		}
 	}
-
 	if mode < models.ACCESS_MODE_WRITE {
 		err = os.Setenv("GIT_ANNEX_SHELL_READONLY", "True")
 		if err != nil {