From 7b4dda5a179c78de5e099231ec407836db4c8dbd Mon Sep 17 00:00:00 2001 From: Adrien de Peretti Date: Mon, 15 Dec 2025 13:36:01 +0100 Subject: [PATCH] chore(): apply locale middleware to all store routes (#14305) * chore(): apply locale middleware to all store routes * Create pink-papayas-brush.md --- .changeset/pink-papayas-brush.md | 6 ++++++ .../src/http/middlewares/apply-locale.ts | 1 + packages/core/framework/src/http/router.ts | 16 +++++++++++++++- .../medusa/src/api/store/products/middlewares.ts | 5 ----- 4 files changed, 22 insertions(+), 6 deletions(-) create mode 100644 .changeset/pink-papayas-brush.md diff --git a/.changeset/pink-papayas-brush.md b/.changeset/pink-papayas-brush.md new file mode 100644 index 0000000000..818595aaae --- /dev/null +++ b/.changeset/pink-papayas-brush.md @@ -0,0 +1,6 @@ +--- +"@medusajs/medusa": patch +"@medusajs/framework": patch +--- + +chore(): apply locale middleware to all store routes diff --git a/packages/core/framework/src/http/middlewares/apply-locale.ts b/packages/core/framework/src/http/middlewares/apply-locale.ts index 9c4d079527..b08004fec4 100644 --- a/packages/core/framework/src/http/middlewares/apply-locale.ts +++ b/packages/core/framework/src/http/middlewares/apply-locale.ts @@ -25,6 +25,7 @@ export async function applyLocale( const queryLocale = req.query.locale as string | undefined if (queryLocale) { req.locale = normalizeLocale(queryLocale) + delete req.query.locale return next() } diff --git a/packages/core/framework/src/http/router.ts b/packages/core/framework/src/http/router.ts index 177925570b..c4b649c009 100644 --- a/packages/core/framework/src/http/router.ts +++ b/packages/core/framework/src/http/router.ts @@ -28,7 +28,7 @@ import { Logger, MedusaContainer } from "@medusajs/types" import { join } from "path" import { configManager } from "../config" import { MiddlewareFileLoader } from "./middleware-file-loader" -import { authenticate, AuthType } from "./middlewares" +import { applyLocale, authenticate, AuthType } from "./middlewares" import { createBodyParserMiddlewaresStack } from "./middlewares/bodyparser" import { ensurePublishableApiKeyMiddleware } from "./middlewares/ensure-publishable-api-key" import { errorHandler } from "./middlewares/error-handler" @@ -406,6 +406,18 @@ export class ApiLoader { this.#app.use(namespace, middleware as RequestHandler) } + #applyLocaleMiddleware(namespace: string) { + this.#logger.debug( + `Registering locale middleware for namespace ${namespace}` + ) + let middleware = ApiLoader.traceMiddleware + ? ApiLoader.traceMiddleware(applyLocale, { + route: namespace, + }) + : applyLocale + this.#app.use(namespace, middleware as RequestHandler) + } + async load() { if (FeatureFlag.isFeatureEnabled("backend_hmr")) { ;(global as any).__MEDUSA_HMR_API_LOADER__ = this @@ -482,6 +494,8 @@ export class ApiLoader { */ this.#applyStorePublishableKeyMiddleware("/store") + this.#applyLocaleMiddleware("/store") + this.#applyAuthMiddleware( routesFinder, "/store", diff --git a/packages/medusa/src/api/store/products/middlewares.ts b/packages/medusa/src/api/store/products/middlewares.ts index a2d33dbcb1..1a2f6d3d0e 100644 --- a/packages/medusa/src/api/store/products/middlewares.ts +++ b/packages/medusa/src/api/store/products/middlewares.ts @@ -1,7 +1,6 @@ import { validateAndTransformQuery } from "@medusajs/framework" import { applyDefaultFilters, - applyLocale, applyParamsAsFilters, authenticate, clearFiltersByKey, @@ -64,10 +63,6 @@ async function applyMaybeLinkFilterIfNecessary( } export const storeProductRoutesMiddlewares: MiddlewareRoute[] = [ - { - matcher: "/store/products/*", - middlewares: [applyLocale], - }, { method: ["GET"], matcher: "/store/products",