From abc57b6e439c5ab9c3b6ed2cedeb10d50f5ae619 Mon Sep 17 00:00:00 2001 From: Unknwon Date: Fri, 7 Nov 2014 14:46:13 -0500 Subject: work on #609 --- modules/middleware/context.go | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) (limited to 'modules/middleware') diff --git a/modules/middleware/context.go b/modules/middleware/context.go index d2620fed..7d767b9e 100644 --- a/modules/middleware/context.go +++ b/modules/middleware/context.go @@ -173,6 +173,27 @@ func Contexter() macaron.Handler { // Get user from session if logined. ctx.User = auth.SignedInUser(ctx.Req.Header, ctx.Session) + + // Check with basic auth again. + if ctx.User == nil { + baHead := ctx.Req.Header.Get("Authorization") + auths := strings.Fields(baHead) + if len(auths) == 2 && auths[0] == "Basic" { + uname, passwd, _ := base.BasicAuthDecode(auths[1]) + u, err := models.GetUserByName(uname) + if err != nil { + if err != models.ErrUserNotExist { + ctx.Handle(500, "GetUserByName", err) + return + } + } else { + if u.ValidtePassword(passwd) { + ctx.User = u + } + } + } + } + if ctx.User != nil { ctx.IsSigned = true ctx.Data["IsSigned"] = ctx.IsSigned -- cgit v1.2.3