Add a "null" auth backend
Not built by default, but can be added with `go build -tags nullauth`. Enabled by running tokidoki with `-auth.url null://`. Very useful for simpler debugging when you don't want manage test accounts with actual passwords.
This commit is contained in:
parent
ddc11d4c7b
commit
1d871b000a
37
auth/null.go
Normal file
37
auth/null.go
Normal file
@ -0,0 +1,37 @@
|
|||||||
|
//go:build nullauth
|
||||||
|
|
||||||
|
package auth
|
||||||
|
|
||||||
|
import (
|
||||||
|
"net/http"
|
||||||
|
)
|
||||||
|
|
||||||
|
type nullProvider struct{}
|
||||||
|
|
||||||
|
func NewNull() (AuthProvider, error) {
|
||||||
|
return nullProvider{}, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (nullProvider) Middleware() func(http.Handler) http.Handler {
|
||||||
|
return func(next http.Handler) http.Handler {
|
||||||
|
return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
|
||||||
|
nullAuth(next, w, r)
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func nullAuth(next http.Handler, w http.ResponseWriter, r *http.Request) {
|
||||||
|
user, _, ok := r.BasicAuth()
|
||||||
|
if !ok {
|
||||||
|
w.Header().Add("WWW-Authenticate", `Basic realm="Please provide your system credentials", charset="UTF-8"`)
|
||||||
|
http.Error(w, "HTTP Basic auth is required", http.StatusUnauthorized)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
authCtx := AuthContext{
|
||||||
|
AuthMethod: "null",
|
||||||
|
UserName: user,
|
||||||
|
}
|
||||||
|
ctx := NewContext(r.Context(), &authCtx)
|
||||||
|
r = r.WithContext(ctx)
|
||||||
|
next.ServeHTTP(w, r)
|
||||||
|
}
|
11
auth/null_stub.go
Normal file
11
auth/null_stub.go
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
//go:build !nullauth
|
||||||
|
|
||||||
|
package auth
|
||||||
|
|
||||||
|
import (
|
||||||
|
"errors"
|
||||||
|
)
|
||||||
|
|
||||||
|
func NewNull() (AuthProvider, error) {
|
||||||
|
return nil, errors.New("NullAuth is disabled")
|
||||||
|
}
|
@ -18,6 +18,8 @@ func NewFromURL(authURL string) (AuthProvider, error) {
|
|||||||
return NewIMAP(u.Host, true), nil
|
return NewIMAP(u.Host, true), nil
|
||||||
case "pam":
|
case "pam":
|
||||||
return NewPAM()
|
return NewPAM()
|
||||||
|
case "null":
|
||||||
|
return NewNull()
|
||||||
default:
|
default:
|
||||||
return nil, fmt.Errorf("no auth provider found for %s:// URL", u.Scheme)
|
return nil, fmt.Errorf("no auth provider found for %s:// URL", u.Scheme)
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user