From d8f9548650f8629f5f86c54bffd8f9e29ef14b3b Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 31 Mar 2025 12:07:59 +0000 Subject: [PATCH 1/4] build(deps): bump github.com/fxamacker/cbor/v2 from 2.7.0 to 2.8.0 Bumps [github.com/fxamacker/cbor/v2](https://github.com/fxamacker/cbor) from 2.7.0 to 2.8.0. - [Release notes](https://github.com/fxamacker/cbor/releases) - [Commits](https://github.com/fxamacker/cbor/compare/v2.7.0...v2.8.0) --- updated-dependencies: - dependency-name: github.com/fxamacker/cbor/v2 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- go.mod | 4 +++- go.sum | 6 ++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/go.mod b/go.mod index f4cd17c1..dea86813 100644 --- a/go.mod +++ b/go.mod @@ -2,6 +2,8 @@ module github.com/gofiber/fiber/v3 go 1.23.0 +toolchain go1.24.1 + require ( github.com/gofiber/schema v1.3.0 github.com/gofiber/utils/v2 v2.0.0-beta.7 @@ -18,7 +20,7 @@ require ( require ( github.com/andybalholm/brotli v1.1.1 // indirect github.com/davecgh/go-spew v1.1.1 // indirect - github.com/fxamacker/cbor/v2 v2.7.0 // direct + github.com/fxamacker/cbor/v2 v2.8.0 // direct github.com/klauspost/compress v1.17.11 // indirect github.com/philhofer/fwd v1.1.3-0.20240916144458-20a13a1f6b7c // indirect github.com/pmezard/go-difflib v1.0.0 // indirect diff --git a/go.sum b/go.sum index 71824581..81b9a920 100644 --- a/go.sum +++ b/go.sum @@ -2,8 +2,8 @@ github.com/andybalholm/brotli v1.1.1 h1:PR2pgnyFznKEugtsUo0xLdDop5SKXd5Qf5ysW+7X github.com/andybalholm/brotli v1.1.1/go.mod h1:05ib4cKhjx3OQYUY22hTVd34Bc8upXjOLL2rKwwZBoA= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/fxamacker/cbor/v2 v2.7.0 h1:iM5WgngdRBanHcxugY4JySA0nk1wZorNOpTgCMedv5E= -github.com/fxamacker/cbor/v2 v2.7.0/go.mod h1:pxXPTn3joSm21Gbwsv0w9OSA2y1HFR9qXEeXQVeNoDQ= +github.com/fxamacker/cbor/v2 v2.8.0 h1:fFtUGXUzXPHTIUdne5+zzMPTfffl3RD5qYnkY40vtxU= +github.com/fxamacker/cbor/v2 v2.8.0/go.mod h1:vM4b+DJCtHn+zz7h3FFp/hDAI9WNWCsZj23V5ytsSxQ= github.com/gofiber/schema v1.3.0 h1:K3F3wYzAY+aivfCCEHPufCthu5/13r/lzp1nuk6mr3Q= github.com/gofiber/schema v1.3.0/go.mod h1:YYwj01w3hVfaNjhtJzaqetymL56VW642YS3qZPhuE6c= github.com/gofiber/utils/v2 v2.0.0-beta.7 h1:NnHFrRHvhrufPABdWajcKZejz9HnCWmT/asoxRsiEbQ= @@ -34,8 +34,6 @@ github.com/xyproto/randomstring v1.0.5 h1:YtlWPoRdgMu3NZtP45drfy1GKoojuR7hmRcnhZ github.com/xyproto/randomstring v1.0.5/go.mod h1:rgmS5DeNXLivK7YprL0pY+lTuhNQW3iGxZ18UQApw/E= golang.org/x/crypto v0.36.0 h1:AnAEvhDddvBdpY+uR+MyHmuZzzNqXSe/GvuDeob5L34= golang.org/x/crypto v0.36.0/go.mod h1:Y4J0ReaxCR1IMaabaSMugxJES1EpwhBHhv2bDHklZvc= -golang.org/x/net v0.35.0 h1:T5GQRQb2y08kTAByq9L4/bz8cipCdA8FbRTXewonqY8= -golang.org/x/net v0.35.0/go.mod h1:EglIi67kWsHKlRzzVMUD93VMSWGFOMSZgxFjparz1Qk= golang.org/x/net v0.37.0 h1:1zLorHbz+LYj7MQlSf1+2tPIIgibq2eL5xkrGk6f+2c= golang.org/x/net v0.37.0/go.mod h1:ivrbrMbzFq5J41QOQh0siUuly180yBYtLp+CKbEaFx8= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= From 2f794d9f88898c998e6bb611c9ce6f4c15223bc8 Mon Sep 17 00:00:00 2001 From: Juan Calderon-Perez <835733+gaby@users.noreply.github.com> Date: Mon, 31 Mar 2025 08:14:18 -0400 Subject: [PATCH 2/4] Update go.mod --- go.mod | 1 - 1 file changed, 1 deletion(-) diff --git a/go.mod b/go.mod index dea86813..39f1a36d 100644 --- a/go.mod +++ b/go.mod @@ -2,7 +2,6 @@ module github.com/gofiber/fiber/v3 go 1.23.0 -toolchain go1.24.1 require ( github.com/gofiber/schema v1.3.0 From dec28010e9cd6ba93c2e4439695229720ce0ea1e Mon Sep 17 00:00:00 2001 From: Juan Calderon-Perez <835733+gaby@users.noreply.github.com> Date: Mon, 31 Mar 2025 08:14:32 -0400 Subject: [PATCH 3/4] Update go.mod --- go.mod | 1 - 1 file changed, 1 deletion(-) diff --git a/go.mod b/go.mod index 39f1a36d..f5490bf1 100644 --- a/go.mod +++ b/go.mod @@ -2,7 +2,6 @@ module github.com/gofiber/fiber/v3 go 1.23.0 - require ( github.com/gofiber/schema v1.3.0 github.com/gofiber/utils/v2 v2.0.0-beta.7 From bb12633c8ba8f085e9a568de49e505476d51b2d0 Mon Sep 17 00:00:00 2001 From: Jason McNeil Date: Mon, 31 Mar 2025 11:55:01 -0300 Subject: [PATCH 4/4] =?UTF-8?q?Revert=20"=F0=9F=94=A5=20feat:=20Add=20supp?= =?UTF-8?q?ort=20for=20context.Context=20in=20keyauth=20middleware"=20(#33?= =?UTF-8?q?64)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Revert "🔥 feat: Add support for context.Context in keyauth middleware (#3287)" This reverts commit 4177ab4086a97648553f34bcff2ff81a137d31f3. Co-authored-by: Juan Calderon-Perez <835733+gaby@users.noreply.github.com> --- middleware/keyauth/keyauth.go | 22 ++------ middleware/keyauth/keyauth_test.go | 82 +++++++++--------------------- 2 files changed, 29 insertions(+), 75 deletions(-) diff --git a/middleware/keyauth/keyauth.go b/middleware/keyauth/keyauth.go index 54ecdbe5..e245ba42 100644 --- a/middleware/keyauth/keyauth.go +++ b/middleware/keyauth/keyauth.go @@ -2,7 +2,6 @@ package keyauth import ( - "context" "errors" "fmt" "net/url" @@ -60,10 +59,7 @@ func New(config ...Config) fiber.Handler { valid, err := cfg.Validator(c, key) if err == nil && valid { - // Store in both Locals and Context c.Locals(tokenKey, key) - ctx := context.WithValue(c.Context(), tokenKey, key) - c.SetContext(ctx) return cfg.SuccessHandler(c) } return cfg.ErrorHandler(c, err) @@ -72,20 +68,12 @@ func New(config ...Config) fiber.Handler { // TokenFromContext returns the bearer token from the request context. // returns an empty string if the token does not exist -func TokenFromContext(c any) string { - switch ctx := c.(type) { - case context.Context: - if token, ok := ctx.Value(tokenKey).(string); ok { - return token - } - case fiber.Ctx: - if token, ok := ctx.Locals(tokenKey).(string); ok { - return token - } - default: - panic("unsupported context type, expected fiber.Ctx or context.Context") +func TokenFromContext(c fiber.Ctx) string { + token, ok := c.Locals(tokenKey).(string) + if !ok { + return "" } - return "" + return token } // MultipleKeySourceLookup creates a CustomKeyLookup function that checks multiple sources until one is found diff --git a/middleware/keyauth/keyauth_test.go b/middleware/keyauth/keyauth_test.go index 27c4e5a0..72c9d3c1 100644 --- a/middleware/keyauth/keyauth_test.go +++ b/middleware/keyauth/keyauth_test.go @@ -503,67 +503,33 @@ func Test_TokenFromContext_None(t *testing.T) { } func Test_TokenFromContext(t *testing.T) { - // Test that TokenFromContext returns the correct token - t.Run("fiber.Ctx", func(t *testing.T) { - app := fiber.New() - app.Use(New(Config{ - KeyLookup: "header:Authorization", - AuthScheme: "Basic", - Validator: func(_ fiber.Ctx, key string) (bool, error) { - if key == CorrectKey { - return true, nil - } - return false, ErrMissingOrMalformedAPIKey - }, - })) - app.Get("/", func(c fiber.Ctx) error { - return c.SendString(TokenFromContext(c)) - }) - - req := httptest.NewRequest(fiber.MethodGet, "/", nil) - req.Header.Add("Authorization", "Basic "+CorrectKey) - res, err := app.Test(req) - require.NoError(t, err) - - body, err := io.ReadAll(res.Body) - require.NoError(t, err) - require.Equal(t, CorrectKey, string(body)) + app := fiber.New() + // Wire up keyauth middleware to set TokenFromContext now + app.Use(New(Config{ + KeyLookup: "header:Authorization", + AuthScheme: "Basic", + Validator: func(_ fiber.Ctx, key string) (bool, error) { + if key == CorrectKey { + return true, nil + } + return false, ErrMissingOrMalformedAPIKey + }, + })) + // Define a test handler that checks TokenFromContext + app.Get("/", func(c fiber.Ctx) error { + return c.SendString(TokenFromContext(c)) }) - t.Run("context.Context", func(t *testing.T) { - app := fiber.New() - app.Use(New(Config{ - KeyLookup: "header:Authorization", - AuthScheme: "Basic", - Validator: func(_ fiber.Ctx, key string) (bool, error) { - if key == CorrectKey { - return true, nil - } - return false, ErrMissingOrMalformedAPIKey - }, - })) - // Verify that TokenFromContext works with context.Context - app.Get("/", func(c fiber.Ctx) error { - ctx := c.Context() - token := TokenFromContext(ctx) - return c.SendString(token) - }) + req := httptest.NewRequest(fiber.MethodGet, "/", nil) + req.Header.Add("Authorization", "Basic "+CorrectKey) + // Send + res, err := app.Test(req) + require.NoError(t, err) - req := httptest.NewRequest(fiber.MethodGet, "/", nil) - req.Header.Add("Authorization", "Basic "+CorrectKey) - res, err := app.Test(req) - require.NoError(t, err) - - body, err := io.ReadAll(res.Body) - require.NoError(t, err) - require.Equal(t, CorrectKey, string(body)) - }) - - t.Run("invalid context type", func(t *testing.T) { - require.Panics(t, func() { - _ = TokenFromContext("invalid") - }) - }) + // Read the response body into a string + body, err := io.ReadAll(res.Body) + require.NoError(t, err) + require.Equal(t, CorrectKey, string(body)) } func Test_AuthSchemeToken(t *testing.T) {