main
Bel LaPointe 2024-02-20 08:00:09 -07:00
parent c8bd8a591d
commit f958dcacc4
1 changed files with 9 additions and 21 deletions

View File

@ -91,43 +91,31 @@ func (h Handler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
func (h Handler) serveHTTP(w http.ResponseWriter, r *http.Request) error {
h.limiter.Wait(r.Context())
if ok, err := h.auth(r); err != nil {
session, err := h.auth(r)
if err != nil {
return err
} else if !ok {
}
if session.Empty() {
w.Header().Set("WWW-Authenticate", "Basic realm=xyz")
w.WriteHeader(http.StatusUnauthorized)
w.Write([]byte(`IDENTIFY YOURSELF!`))
return nil
}
return h.handle(w, r)
return h.handle(session, w, r)
}
func (h Handler) auth(r *http.Request) (bool, error) {
func (h Handler) auth(r *http.Request) (session, error) {
user, pass, ok := r.BasicAuth()
if !ok {
return false, nil
return Session{}, nil
}
session := Session{}
session.User.ID = base64.StdEncoding.EncodeToString([]byte(fmt.Sprintf("%s:%s", user, pass)))
session.User.Name = user
h.putSession(r, session)
return true, nil
return session, nil
}
func (h Handler) putSession(r *http.Request, session Session) {
ctx := r.Context()
ctx = context.WithValue(ctx, "session", session)
*r = *r.WithContext(ctx)
}
func (h Handler) getSession(r *http.Request) Session {
ctx := r.Context()
v := ctx.Value("session")
session, _ := v.(Session)
return session
}
func (h Handler) handle(w http.ResponseWriter, r *http.Request) error {
func (h Handler) handle(session Session, w http.ResponseWriter, r *http.Request) error {
return errors.New("not impl")
}