瀏覽代碼

Fix auth issue on #80

Unknown 11 年之前
父節點
當前提交
2dc0329c5f
共有 1 個文件被更改,包括 19 次插入17 次删除
  1. 19 17
      routers/repo/http.go

+ 19 - 17
routers/repo/http.go

@@ -58,7 +58,8 @@ func Http(ctx *middleware.Context, params martini.Params) {
 	}
 
 	// only public pull don't need auth
-	var askAuth = !(!repo.IsPrivate && isPull) || base.Service.RequireSignInView
+	isPublicPull := !repo.IsPrivate && isPull
+	var askAuth = !isPublicPull || base.Service.RequireSignInView
 
 	var authUser *models.User
 
@@ -91,32 +92,33 @@ func Http(ctx *middleware.Context, params martini.Params) {
 		}
 
 		newUser := &models.User{Passwd: passwd, Salt: authUser.Salt}
-
 		newUser.EncodePasswd()
 		if authUser.Passwd != newUser.Passwd {
 			ctx.Handle(401, "no basic auth and digit auth", nil)
 			return
 		}
 
-		var tp = models.AU_WRITABLE
-		if isPull {
-			tp = models.AU_READABLE
-		}
+		if !isPublicPull {
+			var tp = models.AU_WRITABLE
+			if isPull {
+				tp = models.AU_READABLE
+			}
 
-		has, err := models.HasAccess(authUsername, username+"/"+reponame, tp)
-		if err != nil {
-			ctx.Handle(401, "no basic auth and digit auth", nil)
-			return
-		} else if !has {
-			if tp == models.AU_READABLE {
-				has, err = models.HasAccess(authUsername, username+"/"+reponame, models.AU_WRITABLE)
-				if err != nil || !has {
+			has, err := models.HasAccess(authUsername, username+"/"+reponame, tp)
+			if err != nil {
+				ctx.Handle(401, "no basic auth and digit auth", nil)
+				return
+			} else if !has {
+				if tp == models.AU_READABLE {
+					has, err = models.HasAccess(authUsername, username+"/"+reponame, models.AU_WRITABLE)
+					if err != nil || !has {
+						ctx.Handle(401, "no basic auth and digit auth", nil)
+						return
+					}
+				} else {
 					ctx.Handle(401, "no basic auth and digit auth", nil)
 					return
 				}
-			} else {
-				ctx.Handle(401, "no basic auth and digit auth", nil)
-				return
 			}
 		}
 	}