From 15e4d10fd4b35a2e70cc4fa6ad4117cd5c402cbc Mon Sep 17 00:00:00 2001 From: Quentin Date: Mon, 23 Aug 2021 20:40:03 +0200 Subject: Refactor the codebase --- auth_basic.go | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 auth_basic.go (limited to 'auth_basic.go') 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) +} -- cgit v1.2.3