package auth import ( "fmt" "net/http" ) func NewBasicAuthProvider(username, password string) AuthProvider { return &basicAuthProvider{ hashedAuth: encodeBasicAuth(username, password), } } type basicAuthProvider struct { hashedAuth string } func (p *basicAuthProvider) IsAllowed(request *http.Request) bool { username, password, ok := request.BasicAuth() if !ok { return false } requestAuth := encodeBasicAuth(username, password) return p.hashedAuth == requestAuth } func encodeBasicAuth(username, password string) string { return HashString(fmt.Sprintf("%s:%s", username, password)) }