Просмотр исходного кода

Migrate purchaseAddon to zod

GitOrigin-RevId: 532b2f3b04dc9ef7b149a4caaa62fe8495d78622
Eric Mc Sween 1 год назад
Родитель
Сommit
4797ca035c

+ 9 - 1
services/web/app/src/Features/Subscription/SubscriptionController.js

@@ -40,6 +40,7 @@ const PermissionsManager = require('../Authorization/PermissionsManager')
 const {
 const {
   sanitizeSessionUserForFrontEnd,
   sanitizeSessionUserForFrontEnd,
 } = require('../../infrastructure/FrontEndUser')
 } = require('../../infrastructure/FrontEndUser')
+const { z, validateReq } = require('../../infrastructure/Validation')
 const { IndeterminateInvoiceError } = require('../Errors/Errors')
 const { IndeterminateInvoiceError } = require('../Errors/Errors')
 const SubscriptionLocator = require('./SubscriptionLocator')
 const SubscriptionLocator = require('./SubscriptionLocator')
 
 
@@ -564,9 +565,16 @@ async function previewAddonPurchase(req, res) {
   })
   })
 }
 }
 
 
+const purchaseAddonSchema = z.object({
+  params: z.object({
+    addOnCode: z.string(),
+  }),
+})
+
 async function purchaseAddon(req, res, next) {
 async function purchaseAddon(req, res, next) {
   const user = SessionManager.getSessionUser(req.session)
   const user = SessionManager.getSessionUser(req.session)
-  const addOnCode = req.params.addOnCode
+  const { params } = validateReq(req, purchaseAddonSchema)
+  const addOnCode = params.addOnCode
   // currently we only support having a quantity of 1
   // currently we only support having a quantity of 1
   const quantity = 1
   const quantity = 1
   // currently we only support one add-on, the Ai add-on
   // currently we only support one add-on, the Ai add-on

+ 0 - 5
services/web/app/src/Features/Subscription/SubscriptionRouter.mjs

@@ -177,11 +177,6 @@ export default {
     webRouter.post(
     webRouter.post(
       '/user/subscription/addon/:addOnCode/add',
       '/user/subscription/addon/:addOnCode/add',
       AuthenticationController.requireLogin(),
       AuthenticationController.requireLogin(),
-      validate({
-        params: Joi.object({
-          addOnCode: Joi.string(),
-        }),
-      }),
       RateLimiterMiddleware.rateLimit(subscriptionRateLimiter),
       RateLimiterMiddleware.rateLimit(subscriptionRateLimiter),
       SubscriptionController.purchaseAddon
       SubscriptionController.purchaseAddon
     )
     )