From 379fa7726a271bda92145e3f6fb40d936600ca08 Mon Sep 17 00:00:00 2001 From: David Thorpe Date: Tue, 4 Jun 2024 12:36:46 +0200 Subject: [PATCH] Added middleware --- cmd/nginx-server/main.go | 3 +++ pkg/handler/auth/config.go | 1 + pkg/handler/auth/endpoints.go | 6 ++++++ pkg/handler/auth/middleware.go | 27 +++++++++++++++++++++++++++ pkg/handler/auth/task.go | 1 - pkg/handler/tokenjar/task.go | 2 +- 6 files changed, 38 insertions(+), 2 deletions(-) create mode 100644 pkg/handler/auth/middleware.go diff --git a/cmd/nginx-server/main.go b/cmd/nginx-server/main.go index b53d6e2..baba40f 100644 --- a/cmd/nginx-server/main.go +++ b/cmd/nginx-server/main.go @@ -62,6 +62,7 @@ func main() { auth, err := auth.Config{ TokenJar: jar.(auth.TokenJar), TokenBytes: 8, + Bearer: true, // Use bearer token in requests for authorization }.New() if err != nil { log.Fatal(err) @@ -77,12 +78,14 @@ func main() { Service: n.(server.ServiceEndpoints), Middleware: []server.Middleware{ logger.(server.Middleware), + auth.(server.Middleware), }, }, "auth": { // /api/auth/... Service: auth.(server.ServiceEndpoints), Middleware: []server.Middleware{ logger.(server.Middleware), + auth.(server.Middleware), }, }, }, diff --git a/pkg/handler/auth/config.go b/pkg/handler/auth/config.go index d75671e..8ab229e 100644 --- a/pkg/handler/auth/config.go +++ b/pkg/handler/auth/config.go @@ -11,6 +11,7 @@ import ( type Config struct { TokenJar TokenJar `hcl:"token_jar" description:"Persistent storage for tokens"` TokenBytes int `hcl:"token_bytes" description:"Number of bytes in a token"` + Bearer bool `hcl:"bearer" description:"Use bearer token for authorization"` } // Check interfaces are satisfied diff --git a/pkg/handler/auth/endpoints.go b/pkg/handler/auth/endpoints.go index 5f01deb..3f951f6 100644 --- a/pkg/handler/auth/endpoints.go +++ b/pkg/handler/auth/endpoints.go @@ -15,6 +15,12 @@ import ( types "github.com/mutablelogic/go-server/pkg/types" ) +/////////////////////////////////////////////////////////////////////////////// +// TYPES + +// Check interfaces are satisfied +var _ server.ServiceEndpoints = (*auth)(nil) + /////////////////////////////////////////////////////////////////////////////// // GLOBALS diff --git a/pkg/handler/auth/middleware.go b/pkg/handler/auth/middleware.go new file mode 100644 index 0000000..9b823c6 --- /dev/null +++ b/pkg/handler/auth/middleware.go @@ -0,0 +1,27 @@ +package auth + +import ( + "context" + "net/http" + + // Packages + "github.com/mutablelogic/go-server" + "github.com/mutablelogic/go-server/pkg/provider" +) + +/////////////////////////////////////////////////////////////////////////////// +// TYPES + +// Check interfaces are satisfied +var _ server.Middleware = (*auth)(nil) + +/////////////////////////////////////////////////////////////////////////////// +// PUBLIC METHODS + +func (middleware *auth) Wrap(ctx context.Context, next http.HandlerFunc) http.HandlerFunc { + logger := provider.Logger(ctx) + return func(w http.ResponseWriter, r *http.Request) { + logger.Printf(ctx, "TODO Auth: %v", r.URL) + next(w, r) + } +} diff --git a/pkg/handler/auth/task.go b/pkg/handler/auth/task.go index 4811772..bfbdfd0 100644 --- a/pkg/handler/auth/task.go +++ b/pkg/handler/auth/task.go @@ -21,7 +21,6 @@ type auth struct { // Check interfaces are satisfied var _ server.Task = (*auth)(nil) -var _ server.ServiceEndpoints = (*auth)(nil) /////////////////////////////////////////////////////////////////////////////// // LIFECYCLE diff --git a/pkg/handler/tokenjar/task.go b/pkg/handler/tokenjar/task.go index 4f1ddaf..ba8e361 100644 --- a/pkg/handler/tokenjar/task.go +++ b/pkg/handler/tokenjar/task.go @@ -33,7 +33,7 @@ func (jar *tokenjar) Run(ctx context.Context) error { if err := jar.Write(); err != nil { logger.Print(ctx, err) } else { - logger.Print(ctx, "Sync %q", filepath.Base(jar.filename)) + logger.Printf(ctx, "Sync %q", filepath.Base(jar.filename)) } } case <-ctx.Done():