diff options
Diffstat (limited to 'pkg/context/auth.go')
-rw-r--r-- | pkg/context/auth.go | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/pkg/context/auth.go b/pkg/context/auth.go index 60c020a0..facc9631 100644 --- a/pkg/context/auth.go +++ b/pkg/context/auth.go @@ -5,13 +5,16 @@ package context import ( + "net/http" "net/url" + "strings" "github.com/go-macaron/csrf" "gopkg.in/macaron.v1" "github.com/gogs/gogs/pkg/auth" "github.com/gogs/gogs/pkg/setting" + "github.com/gogs/gogs/pkg/tool" ) type ToggleOptions struct { @@ -92,3 +95,18 @@ func Toggle(options *ToggleOptions) macaron.Handler { } } } + +// RequireBasicAuth verifies HTTP Basic Authentication header with given credentials +func (c *Context) RequireBasicAuth(username, password string) { + fields := strings.Fields(c.Req.Header.Get("Authorization")) + if len(fields) != 2 || fields[0] != "Basic" { + c.Status(http.StatusUnauthorized) + return + } + + uname, passwd, _ := tool.BasicAuthDecode(fields[1]) + if uname != username || passwd != password { + c.Status(http.StatusForbidden) + return + } +} |