mirror of
https://github.com/therootcompany/golib.git
synced 2026-01-27 23:18:05 +00:00
31 lines
709 B
Go
31 lines
709 B
Go
package middleware
|
|
|
|
import (
|
|
"context"
|
|
"net/http"
|
|
)
|
|
|
|
type BasicAuthVerifier interface {
|
|
Verify(string, string) bool
|
|
}
|
|
|
|
type usernameKeyType struct{}
|
|
|
|
var UsernameKey usernameKeyType
|
|
|
|
func BasicAuth(v BasicAuthVerifier) func(http.HandlerFunc) http.HandlerFunc {
|
|
return func(next http.HandlerFunc) http.HandlerFunc {
|
|
return func(w http.ResponseWriter, r *http.Request) {
|
|
username, password, ok := r.BasicAuth()
|
|
if !ok || !v.Verify(username, password) {
|
|
// s.jsonError(w, http.StatusUnauthorized, "unauthorized", "Unauthorized", "Invalid credentials")
|
|
return
|
|
}
|
|
|
|
ctx := r.Context()
|
|
ctx = context.WithValue(ctx, UsernameKey, username)
|
|
next.ServeHTTP(w, r.WithContext(ctx))
|
|
}
|
|
}
|
|
}
|