diff options
Diffstat (limited to 'auth_basic.go')
-rw-r--r-- | auth_basic.go | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/auth_basic.go b/auth_basic.go new file mode 100644 index 0000000..f0cfaae --- /dev/null +++ b/auth_basic.go @@ -0,0 +1,28 @@ +package main + +import ( + "errors" + "net/http" +) + +/* + * We extract the credentials from the Basic Auth headers + * (We may think to other ways to pass credentials such as a JWT) + */ +type BasicAuthExtract struct { + OnNotFound ErrorHandler + OnCreds CredsHandler +} + +func (b BasicAuthExtract) ServeHTTP(w http.ResponseWriter, r *http.Request) { + username, password, ok := r.BasicAuth() + if !ok { + b.OnNotFound.WithError(errors.New("LDAP. Missing Authentication Header")).ServeHTTP(w, r) + return + } + if username == "" || password == "" { + b.OnNotFound.WithError(errors.New("LDAP. Username or password cannot be empty")).ServeHTTP(w, r) + return + } + b.OnCreds.WithCreds(username, password).ServeHTTP(w, r) +} |