1234567891011121314151617181920212223242526272829303132333435363738 |
- package api
- import (
- "fmt"
- "net/http"
- "wkla.no-ip.biz/gogs/Willie/MsgService/MessageService/dao"
- )
- // BasicAuth implements a simple middleware handler for adding basic http auth to a route.
- func BasicAuth(realm string) func(next http.Handler) http.Handler {
- return func(next http.Handler) http.Handler {
- return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
- user, pass, ok := r.BasicAuth()
- if !ok {
- basicAuthFailed(w, realm)
- return
- }
- idm := dao.GetIDM()
- salt, ok := idm.GetSalt(user)
- if !ok {
- basicAuthFailed(w, realm)
- return
- }
- pass = dao.BuildPasswordHash(pass, salt)
- if !idm.CheckUser(user, pass) {
- basicAuthFailed(w, realm)
- return
- }
- next.ServeHTTP(w, r)
- })
- }
- }
- func basicAuthFailed(w http.ResponseWriter, realm string) {
- w.Header().Add("WWW-Authenticate", fmt.Sprintf(`Basic realm="%s"`, realm))
- w.WriteHeader(http.StatusUnauthorized)
- }
|