瀏覽代碼

Fix auth issue on #80

tags/v0.9.99
Unknown 10 年之前
父節點
當前提交
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
}
}
}

Loading…
取消
儲存