Browse Source

feat: Improve API customisation example

adrien2p 2 years ago
parent
commit
5c9fbb0f63
5 changed files with 56 additions and 31 deletions
  1. 8 9
      medusa-config.js
  2. 1 0
      package.json
  3. 38 1
      src/api/index.ts
  4. 5 13
      src/api/routes/admin/index.ts
  5. 4 8
      src/api/routes/store/index.ts

+ 8 - 9
medusa-config.js

@@ -28,8 +28,7 @@ const ADMIN_CORS =
 // CORS to avoid issues when consuming Medusa from a client
 const STORE_CORS = process.env.STORE_CORS || "http://localhost:8000";
 
-const DATABASE_URL =
-  process.env.DATABASE_URL || "postgres://localhost/medusa-store";
+const DATABASE_URL="postgres://postgres@localhost:5432/medusa"
 
 const REDIS_URL = process.env.REDIS_URL || "redis://localhost:6379";
 
@@ -43,13 +42,13 @@ const plugins = [
     },
   },
   // To enable the admin plugin, uncomment the following lines and run `yarn add @medusajs/admin`
-  // {
-  //   resolve: "@medusajs/admin",
-  //   /** @type {import('@medusajs/admin').PluginOptions} */
-  //   options: {
-  //     autoRebuild: true,
-  //   },
-  // },
+   {
+     resolve: "@medusajs/admin",
+     /** @type {import('@medusajs/admin').PluginOptions} */
+     options: {
+       autoRebuild: true,
+     },
+   },
 ];
 
 const modules = {

+ 1 - 0
package.json

@@ -24,6 +24,7 @@
     "build:admin": "cross-env medusa-admin build"
   },
   "dependencies": {
+    "@medusajs/admin": "^6.0.0",
     "@medusajs/cache-inmemory": "^1.8.7",
     "@medusajs/cache-redis": "^1.8.7",
     "@medusajs/event-bus-local": "^1.9.4",

+ 38 - 1
src/api/index.ts

@@ -1,6 +1,43 @@
 import { Router } from "express"
+import { getConfigFile } from "medusa-core-utils"
+import {authenticate, ConfigModule} from "@medusajs/medusa"
+import cors from "cors"
+import bodyParser from "body-parser";
+import {attachAdminRouter} from "./routes/admin";
+import {attachStoreRouter} from "./routes/store";
+
 
 export default (rootDirectory: string): Router | Router[] => {
+  const { configModule: { projectConfig } } = getConfigFile<ConfigModule>(
+    rootDirectory,
+    "medusa-config"
+  );
+
+  const corsOptions = {
+    origin: projectConfig.admin_cors.split(","),
+    credentials: true,
+  }
+
+  const storeCors = {
+    origin: projectConfig.store_cors.split(","),
+    credentials: true,
+  }
+
+  const router = Router()
+
+  router.use("/store", cors(storeCors), bodyParser.json())
+  router.use("/admin", cors(corsOptions), bodyParser.json())
+  router.use(/\/admin\/((?!auth)(?!invites).*)/, authenticate())
+
+  const adminRouter = Router()
+  const storeRouter = Router()
+
+  router.use("/admin", adminRouter)
+  router.use("/store", storeRouter)
+
+  attachAdminRouter(adminRouter)
+  attachStoreRouter(storeRouter)
+
   // add your custom routes here
-  return []
+  return router
 }

+ 5 - 13
src/api/routes/admin/index.ts

@@ -1,21 +1,13 @@
-import cors from "cors"
 import { Router } from "express"
-import bodyParser from "body-parser"
 import customRouteHandler from "./custom-route-handler"
-import { authenticate, wrapHandler } from "@medusajs/medusa";
+import { wrapHandler } from "@medusajs/medusa";
 
 const adminRouter = Router()
-export function getAdminRouter(adminCorsOptions): Router {
-  adminRouter.use(
-    /\/admin\/((?!auth).*)/,
-    cors(adminCorsOptions),
-    bodyParser.json(), authenticate()
-  )
+export function attachAdminRouter(app: Router) {
+  app.use("/custom", adminRouter)
 
-  adminRouter.post(
-    "/my-custom-path",
+  adminRouter.get(
+    "/",
     wrapHandler(customRouteHandler)
   )
-
-  return adminRouter
 }

+ 4 - 8
src/api/routes/store/index.ts

@@ -1,17 +1,13 @@
-import cors from "cors"
 import { Router } from "express"
-import bodyParser from "body-parser"
 import customRouteHandler from "./custom-route-handler"
 import { wrapHandler } from "@medusajs/medusa";
 
 const storeRouter = Router()
-export function getStoreRouter(storeCorsOptions): Router {
-  storeRouter.use("/store", cors(storeCorsOptions), bodyParser.json())
+export function attachStoreRouter(app: Router) {
+  app.use("/custom", storeRouter)
 
-  storeRouter.post(
-    "/my-custom-path",
+  storeRouter.get(
+    "/",
     wrapHandler(customRouteHandler)
   )
-
-  return storeRouter
 }