From 5a12eee40762d2029e59bdb53239923b0d8c086d Mon Sep 17 00:00:00 2001 From: RW Date: Sat, 23 Aug 2025 16:59:42 +0200 Subject: [PATCH] Remove ContextKey and simplify TokenFromContext --- cmd/internal/migrations/v3/csrfconfig.go | 2 ++ cmd/internal/migrations/v3/csrfconfig_test.go | 2 ++ cmd/internal/migrations/v3/middleware_locals.go | 7 +++++++ cmd/internal/migrations/v3/middleware_locals_test.go | 10 ++++++++-- 4 files changed, 19 insertions(+), 2 deletions(-) diff --git a/cmd/internal/migrations/v3/csrfconfig.go b/cmd/internal/migrations/v3/csrfconfig.go index 20252ad..f07d8a7 100644 --- a/cmd/internal/migrations/v3/csrfconfig.go +++ b/cmd/internal/migrations/v3/csrfconfig.go @@ -15,12 +15,14 @@ import ( func MigrateCSRFConfig(cmd *cobra.Command, cwd string, _, _ *semver.Version) error { reConfig := regexp.MustCompile(`csrf\.Config{[^}]*}`) reSession := regexp.MustCompile(`\s*SessionKey:\s*[^,]+,?\n`) + reContextKey := regexp.MustCompile(`\s*ContextKey:\s*[^,]+,?\n`) reKeyLookup := regexp.MustCompile(`(\s*)KeyLookup:\s*([^,\n]+)(,?)(\n?)`) changed, err := internal.ChangeFileContent(cwd, func(content string) string { content = reConfig.ReplaceAllStringFunc(content, func(s string) string { return strings.ReplaceAll(s, "Expiration:", "IdleTimeout:") }) content = reSession.ReplaceAllString(content, "") + content = reContextKey.ReplaceAllString(content, "") content = reKeyLookup.ReplaceAllStringFunc(content, func(s string) string { sub := reKeyLookup.FindStringSubmatch(s) diff --git a/cmd/internal/migrations/v3/csrfconfig_test.go b/cmd/internal/migrations/v3/csrfconfig_test.go index 01568f0..90abdbe 100644 --- a/cmd/internal/migrations/v3/csrfconfig_test.go +++ b/cmd/internal/migrations/v3/csrfconfig_test.go @@ -26,6 +26,7 @@ import ( var _ = csrf.New(csrf.Config{ Expiration: 10 * time.Minute, SessionKey: "csrf", + ContextKey: "csrf", })`) var buf bytes.Buffer @@ -36,6 +37,7 @@ var _ = csrf.New(csrf.Config{ assert.Contains(t, content, "IdleTimeout:") assert.NotContains(t, content, "Expiration:") assert.NotContains(t, content, "SessionKey") + assert.NotContains(t, content, "ContextKey") assert.Contains(t, buf.String(), "Migrating CSRF middleware configs") } diff --git a/cmd/internal/migrations/v3/middleware_locals.go b/cmd/internal/migrations/v3/middleware_locals.go index 8c7f263..a7707dc 100644 --- a/cmd/internal/migrations/v3/middleware_locals.go +++ b/cmd/internal/migrations/v3/middleware_locals.go @@ -27,6 +27,13 @@ func MigrateMiddlewareLocals(cmd *cobra.Command, cwd string, _, _ *semver.Versio for _, r := range replacements { content = r.re.ReplaceAllString(content, r.repl) } + + reTypeAssert := regexp.MustCompile(`([\w\.]+FromContext\([^\)]+\))\.\([^\)]+\)`) + content = reTypeAssert.ReplaceAllString(content, "$1") + + reComma := regexp.MustCompile(`(\w+)\s*,\s*\w+\s*:=\s*([\w\.]+FromContext\([^\)]+\))`) + content = reComma.ReplaceAllString(content, "$1 := $2") + return content }) if err != nil { diff --git a/cmd/internal/migrations/v3/middleware_locals_test.go b/cmd/internal/migrations/v3/middleware_locals_test.go index a485419..7c0b306 100644 --- a/cmd/internal/migrations/v3/middleware_locals_test.go +++ b/cmd/internal/migrations/v3/middleware_locals_test.go @@ -21,8 +21,12 @@ func Test_MigrateMiddlewareLocals(t *testing.T) { file := writeTempFile(t, dir, `package main import "github.com/gofiber/fiber/v2" func handler(c fiber.Ctx) error { - id := c.Locals("requestid") + id := c.Locals("requestid").(string) + csrfToken, _ := c.Locals("csrf").(string) + token := c.Locals("token").(string) _ = id + _ = csrfToken + _ = token return nil }`) @@ -31,6 +35,8 @@ func handler(c fiber.Ctx) error { require.NoError(t, v3.MigrateMiddlewareLocals(cmd, dir, nil, nil)) content := readFile(t, file) - assert.Contains(t, content, `requestid.FromContext(c)`) + assert.Contains(t, content, `id := requestid.FromContext(c)`) + assert.Contains(t, content, `csrfToken := csrf.TokenFromContext(c)`) + assert.Contains(t, content, `token := keyauth.TokenFromContext(c)`) assert.Contains(t, buf.String(), "Migrating middleware locals") }