medusa-pos-plugin 0.0.23 → 0.0.26

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.POST = POST;
4
4
  const utils_1 = require("@medusajs/framework/utils");
5
5
  const core_flows_1 = require("@medusajs/core-flows");
6
+ const pos_access_1 = require("../../../../../../utils/pos-access");
6
7
  const validators_1 = require("../../../orders/validators");
7
8
  const fulfill_pos_items_1 = require("../../../orders/fulfill-pos-items");
8
9
  const pos_returns_1 = require("../../../../../../utils/pos-returns");
@@ -173,6 +174,17 @@ async function POST(req, res) {
173
174
  res.status(404).json({ message: "Draft order not found", type: "NOT_FOUND" });
174
175
  return;
175
176
  }
177
+ const preWalletCheckout = (0, pos_finalize_1.validatePosFinalizeCheckout)(order, {
178
+ charged_total: body.charged_total,
179
+ });
180
+ if (!preWalletCheckout.ok) {
181
+ res.status(preWalletCheckout.status).json({
182
+ message: preWalletCheckout.message,
183
+ type: preWalletCheckout.type,
184
+ code: preWalletCheckout.code,
185
+ });
186
+ return;
187
+ }
176
188
  const payableForWallet = (0, pos_returns_1.roundMoney)(typeof body.charged_total === "number" && body.charged_total > 0
177
189
  ? body.charged_total
178
190
  : (0, pos_finalize_1.resolvePosPayableTotal)(order));
@@ -200,6 +212,17 @@ async function POST(req, res) {
200
212
  res.status(404).json({ message: "Draft order not found", type: "NOT_FOUND" });
201
213
  return;
202
214
  }
215
+ const checkout = (0, pos_finalize_1.validatePosFinalizeCheckout)(order, {
216
+ charged_total: body.charged_total,
217
+ });
218
+ if (!checkout.ok) {
219
+ res.status(checkout.status).json({
220
+ message: checkout.message,
221
+ type: checkout.type,
222
+ code: checkout.code,
223
+ });
224
+ return;
225
+ }
203
226
  const variantIds = (Array.isArray(order.items) ? order.items : [])
204
227
  .map((item) => {
205
228
  if (!isRecord(item))
@@ -251,7 +274,7 @@ async function POST(req, res) {
251
274
  payment_method: body.payment_method,
252
275
  wallet_amount: body.wallet_amount,
253
276
  secondary_amount: walletFinalize.secondary_amount,
254
- charged_total: body.charged_total,
277
+ charged_total: checkout.payable,
255
278
  razorpay_qr_id: body.razorpay_qr_id,
256
279
  razorpay_payment_id: body.razorpay_payment_id,
257
280
  cashier_id: confirmedBy !== "system" ? confirmedBy : undefined,
@@ -262,8 +285,19 @@ async function POST(req, res) {
262
285
  item_count: itemCount,
263
286
  checkout_duration_ms: checkoutDurationMs,
264
287
  });
288
+ const posClaims = (0, pos_access_1.readPosClaims)(req.auth_context);
265
289
  const existingMetadata = isRecord(order.metadata) ? order.metadata : {};
266
- const nextMetadata = { ...existingMetadata, ...posPaymentMetadata };
290
+ const nextMetadata = {
291
+ ...existingMetadata,
292
+ ...posPaymentMetadata,
293
+ ...(posClaims
294
+ ? {
295
+ pos_staff_id: posClaims.staff_id,
296
+ pos_staff_role: posClaims.role,
297
+ pos_terminal_id: posClaims.terminal_id,
298
+ }
299
+ : {}),
300
+ };
267
301
  // Snapshot unit_cost onto line item metadata when missing
268
302
  const orderModuleForItems = req.scope.resolve(utils_1.Modules.ORDER);
269
303
  if (typeof orderModuleForItems.updateOrderItems === "function") {
@@ -335,6 +369,19 @@ async function POST(req, res) {
335
369
  }));
336
370
  }
337
371
  order = (await (0, pos_draft_edit_1.timed)("reload", timings, () => loadOrder(query, draftOrderId))) || order;
372
+ const postConvertCheckout = (0, pos_finalize_1.validatePosFinalizeCheckout)(order, {
373
+ charged_total: checkout.payable,
374
+ });
375
+ if (!postConvertCheckout.ok) {
376
+ res.status(postConvertCheckout.status).json({
377
+ message: postConvertCheckout.code === "empty_cart" || postConvertCheckout.code === "invalid_total"
378
+ ? "Cart was empty or invalid after checkout. Payment was not taken — refresh the cart and try again."
379
+ : postConvertCheckout.message,
380
+ type: postConvertCheckout.type,
381
+ code: postConvertCheckout.code,
382
+ });
383
+ return;
384
+ }
338
385
  if (!(0, pos_finalize_1.readAddress1)(order.shipping_address) || !(0, pos_finalize_1.readAddress1)(order.billing_address)) {
339
386
  try {
340
387
  const orderModule = req.scope.resolve(utils_1.Modules.ORDER);
@@ -350,9 +397,7 @@ async function POST(req, res) {
350
397
  }
351
398
  const collections = Array.isArray(order.payment_collections) ? order.payment_collections : [];
352
399
  let paymentCollection = collections[0];
353
- const amount = (0, pos_draft_edit_1.toAmount)(typeof body.charged_total === "number" && body.charged_total > 0
354
- ? body.charged_total
355
- : (0, pos_finalize_1.resolvePosPayableTotal)(order));
400
+ const amount = (0, pos_draft_edit_1.toAmount)(postConvertCheckout.payable);
356
401
  if (!paymentCollection?.id) {
357
402
  const created = await (0, pos_draft_edit_1.timed)("create_paycol", timings, () => (0, core_flows_1.createOrderPaymentCollectionWorkflow)(req.scope).run({
358
403
  input: { order_id: draftOrderId, amount },
@@ -450,4 +495,4 @@ async function POST(req, res) {
450
495
  });
451
496
  }
452
497
  }
453
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL2FkbWluL3Bvcy9kcmFmdC1vcmRlcnMvW2lkXS9maW5hbGl6ZS9yb3V0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQXNNQSxvQkFzWEM7QUEzakJELHFEQUE4RTtBQUM5RSxxREFNNkI7QUFDN0IsMkRBQW1FO0FBQ25FLHlFQUkwQztBQUMxQyxxRUFPNEM7QUFDNUMsMkVBSytDO0FBQy9DLHVFQVU2QztBQUM3Qyx5RUFHOEM7QUFDOUMscUZBQWlGO0FBQ2pGLGlEQUF5RDtBQVV6RCxTQUFTLFFBQVEsQ0FBQyxLQUFjO0lBQzlCLE9BQU8sT0FBTyxDQUFDLEtBQUssSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLENBQUMsQ0FBQTtBQUNwRCxDQUFDO0FBRUQsU0FBUyxlQUFlLENBQUMsS0FBYztJQUNyQyxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxJQUFJLE9BQU8sS0FBSyxDQUFDLEVBQUUsS0FBSyxRQUFRO1FBQUUsT0FBTyxJQUFJLENBQUE7SUFDakUsTUFBTSxNQUFNLEdBQUcsUUFBUSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFBO0lBQzNELE9BQU87UUFDTCxFQUFFLEVBQUUsS0FBSyxDQUFDLEVBQUU7UUFDWixRQUFRLEVBQUUsSUFBQSxzQkFBUSxFQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsSUFBSSxJQUFJO1FBQzFDLE1BQU07S0FDUCxDQUFBO0FBQ0gsQ0FBQztBQUVELE1BQU0sWUFBWSxHQUFHO0lBQ25CLElBQUk7SUFDSixRQUFRO0lBQ1IsZ0JBQWdCO0lBQ2hCLE9BQU87SUFDUCxPQUFPO0lBQ1AsVUFBVTtJQUNWLFlBQVk7SUFDWixnQkFBZ0I7SUFDaEIsZUFBZTtJQUNmLFVBQVU7SUFDVixrQkFB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
498
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL2FkbWluL3Bvcy9kcmFmdC1vcmRlcnMvW2lkXS9maW5hbGl6ZS9yb3V0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQXdNQSxvQkFvYUM7QUEzbUJELHFEQUE4RTtBQUM5RSxxREFNNkI7QUFDN0IsbUVBQWtFO0FBQ2xFLDJEQUFtRTtBQUNuRSx5RUFJMEM7QUFDMUMscUVBTzRDO0FBQzVDLDJFQUsrQztBQUMvQyx1RUFXNkM7QUFDN0MseUVBRzhDO0FBQzlDLHFGQUFpRjtBQUNqRixpREFBeUQ7QUFVekQsU0FBUyxRQUFRLENBQUMsS0FBYztJQUM5QixPQUFPLE9BQU8sQ0FBQyxLQUFLLElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxDQUFDLENBQUE7QUFDcEQsQ0FBQztBQUVELFNBQVMsZUFBZSxDQUFDLEtBQWM7SUFDckMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsSUFBSSxPQUFPLEtBQUssQ0FBQyxFQUFFLEtBQUssUUFBUTtRQUFFLE9BQU8sSUFBSSxDQUFBO0lBQ2pFLE1BQU0sTUFBTSxHQUFHLFFBQVEsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQTtJQUMzRCxPQUFPO1FBQ0wsRUFBRSxFQUFFLEtBQUssQ0FBQyxFQUFFO1FBQ1osUUFBUSxFQUFFLElBQUEsc0JBQVEsRUFBQyxLQUFLLENBQUMsUUFBUSxDQUFDLElBQUksSUFBSTtRQUMxQyxNQUFNO0tBQ1AsQ0FBQTtBQUNILENBQUM7QUFFRCxNQUFNLFlBQVksR0FBRztJQUNuQixJQUFJO0lBQ0osUUFBUTtJQUNSLGdCQUFnQjtJQUNoQixPQUFPO0lBQ1AsT0FBTztJQUNQLFVBQVU7SUFDVixZQUFZO0lBQ1osZ0JBQWdCO0lBQ2hCLGVBQWU7SUFDZixV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
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DELETE = DELETE;
4
+ const utils_1 = require("@medusajs/framework/utils");
5
+ const pos_staff_1 = require("../../../../../utils/pos-staff");
6
+ async function DELETE(req, res) {
7
+ if (!(0, pos_staff_1.requireSecretKey)(req, res))
8
+ return;
9
+ const key = String(req.params.key || "");
10
+ const users = req.scope.resolve(utils_1.Modules.USER);
11
+ const [existing] = await users.listUsers({ email: (0, pos_staff_1.posStaffEmail)(key) }, { take: 1 });
12
+ if (existing)
13
+ await users.softDeleteUsers([existing.id]);
14
+ res.status(200).json({ deleted: Boolean(existing) });
15
+ }
16
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL2FkbWluL3Bvcy9zdGFmZi9ba2V5XS9yb3V0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQVNBLHdCQU9DO0FBVkQscURBQW1EO0FBQ25ELDhEQUFnRjtBQUV6RSxLQUFLLFVBQVUsTUFBTSxDQUFDLEdBQStCLEVBQUUsR0FBbUI7SUFDL0UsSUFBSSxDQUFDLElBQUEsNEJBQWdCLEVBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQztRQUFFLE9BQU07SUFDdkMsTUFBTSxHQUFHLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsR0FBRyxJQUFJLEVBQUUsQ0FBQyxDQUFBO0lBQ3hDLE1BQU0sS0FBSyxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFxQixlQUFPLENBQUMsSUFBSSxDQUFDLENBQUE7SUFDakUsTUFBTSxDQUFDLFFBQVEsQ0FBQyxHQUFHLE1BQU0sS0FBSyxDQUFDLFNBQVMsQ0FBQyxFQUFFLEtBQUssRUFBRSxJQUFBLHlCQUFhLEVBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFBO0lBQ3BGLElBQUksUUFBUTtRQUFFLE1BQU0sS0FBSyxDQUFDLGVBQWUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFBO0lBQ3hELEdBQUcsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsT0FBTyxFQUFFLE9BQU8sQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUE7QUFDdEQsQ0FBQyJ9
@@ -0,0 +1,26 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.POST = POST;
4
+ const utils_1 = require("@medusajs/framework/utils");
5
+ const pos_staff_1 = require("../../../../utils/pos-staff");
6
+ async function POST(req, res) {
7
+ if (!(0, pos_staff_1.requireSecretKey)(req, res))
8
+ return;
9
+ const key = String(req.body?.key || "").trim();
10
+ if (!/^[a-z0-9_-]{6,64}$/i.test(key)) {
11
+ res.status(400).json({ message: "key must be 6-64 letters, digits, _ or -", type: "INVALID_DATA" });
12
+ return;
13
+ }
14
+ const name = String(req.body?.name || "").trim().slice(0, 120) || "POS staff";
15
+ const [first_name, ...rest] = name.split(/\s+/);
16
+ const last_name = rest.join(" ") || null;
17
+ const metadata = { vyaparnext_pos_staff: key, pos_role: req.body?.role || null };
18
+ const users = req.scope.resolve(utils_1.Modules.USER);
19
+ const email = (0, pos_staff_1.posStaffEmail)(key);
20
+ const [existing] = await users.listUsers({ email }, { take: 1 });
21
+ const user = existing
22
+ ? await users.updateUsers({ id: existing.id, first_name, last_name, metadata })
23
+ : await users.createUsers({ email, first_name, last_name, metadata });
24
+ res.status(200).json({ user: { id: user.id, email: user.email } });
25
+ }
26
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL2FkbWluL3Bvcy9zdGFmZi9yb3V0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQVlBLG9CQW9CQztBQXpCRCxxREFBbUQ7QUFDbkQsMkRBQTZFO0FBSXRFLEtBQUssVUFBVSxJQUFJLENBQUMsR0FBcUMsRUFBRSxHQUFtQjtJQUNuRixJQUFJLENBQUMsSUFBQSw0QkFBZ0IsRUFBQyxHQUFHLEVBQUUsR0FBRyxDQUFDO1FBQUUsT0FBTTtJQUN2QyxNQUFNLEdBQUcsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxHQUFHLElBQUksRUFBRSxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUE7SUFDOUMsSUFBSSxDQUFDLHFCQUFxQixDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO1FBQ3JDLEdBQUcsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsT0FBTyxFQUFFLDBDQUEwQyxFQUFFLElBQUksRUFBRSxjQUFjLEVBQUUsQ0FBQyxDQUFBO1FBQ25HLE9BQU07SUFDUixDQUFDO0lBQ0QsTUFBTSxJQUFJLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsSUFBSSxJQUFJLEVBQUUsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLElBQUksV0FBVyxDQUFBO0lBQzdFLE1BQU0sQ0FBQyxVQUFVLEVBQUUsR0FBRyxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFBO0lBQy9DLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksSUFBSSxDQUFBO0lBQ3hDLE1BQU0sUUFBUSxHQUFHLEVBQUUsb0JBQW9CLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBRSxHQUFHLENBQUMsSUFBSSxFQUFFLElBQUksSUFBSSxJQUFJLEVBQUUsQ0FBQTtJQUVoRixNQUFNLEtBQUssR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBcUIsZUFBTyxDQUFDLElBQUksQ0FBQyxDQUFBO0lBQ2pFLE1BQU0sS0FBSyxHQUFHLElBQUEseUJBQWEsRUFBQyxHQUFHLENBQUMsQ0FBQTtJQUNoQyxNQUFNLENBQUMsUUFBUSxDQUFDLEdBQUcsTUFBTSxLQUFLLENBQUMsU0FBUyxDQUFDLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQTtJQUNoRSxNQUFNLElBQUksR0FBRyxRQUFRO1FBQ25CLENBQUMsQ0FBQyxNQUFNLEtBQUssQ0FBQyxXQUFXLENBQUMsRUFBRSxFQUFFLEVBQUUsUUFBUSxDQUFDLEVBQUUsRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxDQUFDO1FBQy9FLENBQUMsQ0FBQyxNQUFNLEtBQUssQ0FBQyxXQUFXLENBQUMsRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFBO0lBRXZFLEdBQUcsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxFQUFFLElBQUksQ0FBQyxFQUFFLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUE7QUFDcEUsQ0FBQyJ9
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const http_1 = require("@medusajs/framework/http");
4
+ const pos_access_1 = require("../utils/pos-access");
5
+ /** Runs after Medusa's admin authentication, so auth_context and body are ready. */
6
+ function posAccessGuard(req, res, next) {
7
+ const claims = (0, pos_access_1.readPosClaims)(req.auth_context);
8
+ if (!claims)
9
+ return next();
10
+ const denial = (0, pos_access_1.checkPosAccess)({
11
+ method: req.method,
12
+ path: req.originalUrl || req.path,
13
+ body: req.body,
14
+ claims,
15
+ });
16
+ if (denial) {
17
+ res.status(denial.status).json({ message: denial.message, type: denial.type });
18
+ return;
19
+ }
20
+ next();
21
+ }
22
+ exports.default = (0, http_1.defineMiddlewares)({
23
+ routes: [
24
+ {
25
+ matcher: "/admin/*",
26
+ middlewares: [posAccessGuard],
27
+ },
28
+ ],
29
+ });
30
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWlkZGxld2FyZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvYXBpL21pZGRsZXdhcmVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsbURBS2lDO0FBQ2pDLG9EQUFtRTtBQUVuRSxvRkFBb0Y7QUFDcEYsU0FBUyxjQUFjLENBQUMsR0FBa0IsRUFBRSxHQUFtQixFQUFFLElBQXdCO0lBQ3ZGLE1BQU0sTUFBTSxHQUFHLElBQUEsMEJBQWEsRUFBRSxHQUFrQyxDQUFDLFlBQVksQ0FBQyxDQUFBO0lBQzlFLElBQUksQ0FBQyxNQUFNO1FBQUUsT0FBTyxJQUFJLEVBQUUsQ0FBQTtJQUMxQixNQUFNLE1BQU0sR0FBRyxJQUFBLDJCQUFjLEVBQUM7UUFDNUIsTUFBTSxFQUFFLEdBQUcsQ0FBQyxNQUFNO1FBQ2xCLElBQUksRUFBRSxHQUFHLENBQUMsV0FBVyxJQUFJLEdBQUcsQ0FBQyxJQUFJO1FBQ2pDLElBQUksRUFBRSxHQUFHLENBQUMsSUFBSTtRQUNkLE1BQU07S0FDUCxDQUFDLENBQUE7SUFDRixJQUFJLE1BQU0sRUFBRSxDQUFDO1FBQ1gsR0FBRyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsT0FBTyxFQUFFLE1BQU0sQ0FBQyxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFBO1FBQzlFLE9BQU07SUFDUixDQUFDO0lBQ0QsSUFBSSxFQUFFLENBQUE7QUFDUixDQUFDO0FBRUQsa0JBQWUsSUFBQSx3QkFBaUIsRUFBQztJQUMvQixNQUFNLEVBQUU7UUFDTjtZQUNFLE9BQU8sRUFBRSxVQUFVO1lBQ25CLFdBQVcsRUFBRSxDQUFDLGNBQWMsQ0FBQztTQUM5QjtLQUNGO0NBQ0YsQ0FBQyxDQUFBIn0=
@@ -0,0 +1,168 @@
1
+ "use strict";
2
+ /**
3
+ * Access policy for POS sessions issued by VyaparNext.
4
+ *
5
+ * VyaparNext signs a normal Medusa admin JWT for each POS session and adds a
6
+ * `pos` claim. Requests without that claim (Medusa admin, secret API keys) are
7
+ * never touched by this policy.
8
+ */
9
+ Object.defineProperty(exports, "__esModule", { value: true });
10
+ exports.readPosClaims = readPosClaims;
11
+ exports.checkPosAccess = checkPosAccess;
12
+ const ROLES = ["owner", "manager", "cashier"];
13
+ function readPosClaims(authContext) {
14
+ const pos = authContext?.pos;
15
+ if (!pos || typeof pos !== "object")
16
+ return null;
17
+ if (pos.v !== 1 || !pos.role || !ROLES.includes(pos.role))
18
+ return null;
19
+ if (!pos.staff_id || !pos.session_id)
20
+ return null;
21
+ return pos;
22
+ }
23
+ const WRITE_METHODS = new Set(["POST", "PUT", "PATCH", "DELETE"]);
24
+ /** Never reachable with a POS session, whatever the role. */
25
+ const ALWAYS_BLOCKED = [
26
+ "/admin/api-keys",
27
+ "/admin/invites",
28
+ "/admin/users",
29
+ "/admin/pos/staff",
30
+ "/admin/workflows-executions",
31
+ ];
32
+ /** Store configuration: owner only. */
33
+ const SETTINGS_WRITE_BLOCKED = [
34
+ "/admin/stock-locations",
35
+ "/admin/regions",
36
+ "/admin/sales-channels",
37
+ "/admin/stores",
38
+ "/admin/tax-rates",
39
+ "/admin/tax-regions",
40
+ "/admin/shipping-options",
41
+ "/admin/shipping-profiles",
42
+ "/admin/fulfillment-sets",
43
+ "/admin/fulfillment-providers",
44
+ "/admin/payment-providers",
45
+ "/admin/price-preferences",
46
+ "/admin/currencies",
47
+ "/admin/return-reasons",
48
+ "/admin/refund-reasons",
49
+ "/admin/notifications",
50
+ ];
51
+ /** Catalog, pricing, stock and money-back actions: manager and owner. */
52
+ const MANAGER_WRITE_ONLY = [
53
+ "/admin/products",
54
+ "/admin/product-helper",
55
+ "/admin/product-categories",
56
+ "/admin/collections",
57
+ "/admin/product-tags",
58
+ "/admin/product-types",
59
+ "/admin/price-lists",
60
+ "/admin/promotions",
61
+ "/admin/campaigns",
62
+ "/admin/inventory-items",
63
+ "/admin/inventory-counts",
64
+ "/admin/reservations",
65
+ "/admin/barcodes",
66
+ "/admin/barcode-template",
67
+ "/admin/customer-groups",
68
+ "/admin/pos/manual-discounts",
69
+ "/admin/wallets",
70
+ "/admin/uploads",
71
+ "/admin/exports",
72
+ ];
73
+ /** Reports and exports: manager and owner, including reads. */
74
+ const MANAGER_READ_ONLY = ["/admin/analytics", "/admin/pos/reports", "/admin/product-helper/products/export"];
75
+ /** Voids, refunds and returns: manager and owner. */
76
+ const MANAGER_ACTION_PATTERNS = [
77
+ /^\/admin\/pos\/orders\/[^/]+\/(cancel|returns)$/,
78
+ /^\/admin\/orders\/[^/]+\/(cancel|fulfillments\/[^/]+\/cancel)$/,
79
+ /^\/admin\/returns(\/|$)/,
80
+ /^\/admin\/refunds?(\/|$)/,
81
+ /^\/admin\/payments\/[^/]+\/refund$/,
82
+ /^\/admin\/claims(\/|$)/,
83
+ /^\/admin\/exchanges(\/|$)/,
84
+ ];
85
+ const BOUND_KEYS = {
86
+ stock_location_id: ["location_id", "stock_location_id"],
87
+ sales_channel_id: ["sales_channel_id"],
88
+ region_id: ["region_id"],
89
+ };
90
+ function underPrefix(path, prefixes) {
91
+ return prefixes.some((p) => path === p || path.startsWith(`${p}/`));
92
+ }
93
+ function deny(message) {
94
+ return { status: 403, message, type: "POS_FORBIDDEN" };
95
+ }
96
+ function normalizePath(path) {
97
+ const clean = (path.split("?")[0] || "/").replace(/\/+$/, "");
98
+ return clean || "/";
99
+ }
100
+ /** Collect values for the given keys anywhere in a JSON body (bounded depth). */
101
+ function collectValues(body, keys, depth = 0, out = []) {
102
+ if (depth > 5 || body === null || typeof body !== "object")
103
+ return out;
104
+ if (Array.isArray(body)) {
105
+ for (const item of body)
106
+ collectValues(item, keys, depth + 1, out);
107
+ return out;
108
+ }
109
+ for (const [key, value] of Object.entries(body)) {
110
+ if (keys.includes(key) && typeof value === "string" && value)
111
+ out.push(value);
112
+ else if (value && typeof value === "object")
113
+ collectValues(value, keys, depth + 1, out);
114
+ }
115
+ return out;
116
+ }
117
+ function checkBindings(path, body, claims) {
118
+ for (const claimKey of Object.keys(BOUND_KEYS)) {
119
+ const bound = claims[claimKey];
120
+ if (!bound)
121
+ continue;
122
+ const values = collectValues(body, BOUND_KEYS[claimKey]);
123
+ if (claimKey === "stock_location_id") {
124
+ const m = path.match(/\/location-levels\/([^/]+)/);
125
+ if (m)
126
+ values.push(decodeURIComponent(m[1]));
127
+ }
128
+ const other = values.find((v) => v !== bound);
129
+ if (other) {
130
+ const label = claimKey.replace(/_id$/, "").replace(/_/g, " ");
131
+ return deny(`This POS session is limited to its assigned ${label}`);
132
+ }
133
+ }
134
+ return null;
135
+ }
136
+ /**
137
+ * Decide whether a POS session may make this admin request.
138
+ * Returns null when allowed.
139
+ */
140
+ function checkPosAccess(input) {
141
+ const method = input.method.toUpperCase();
142
+ const path = normalizePath(input.path);
143
+ const { claims } = input;
144
+ const write = WRITE_METHODS.has(method);
145
+ if (underPrefix(path, ALWAYS_BLOCKED)) {
146
+ if (method === "GET" && path === "/admin/users/me")
147
+ return null;
148
+ return deny("Not available from POS");
149
+ }
150
+ if (claims.role === "owner")
151
+ return null;
152
+ if (write && underPrefix(path, SETTINGS_WRITE_BLOCKED)) {
153
+ return deny("Only the store owner can change store settings");
154
+ }
155
+ if (claims.role === "cashier") {
156
+ if (underPrefix(path, MANAGER_READ_ONLY))
157
+ return deny("Reports need a manager");
158
+ if (write && underPrefix(path, MANAGER_WRITE_ONLY))
159
+ return deny("This action needs a manager");
160
+ if (write && MANAGER_ACTION_PATTERNS.some((re) => re.test(path))) {
161
+ return deny("Voids, returns and refunds need a manager");
162
+ }
163
+ }
164
+ if (write)
165
+ return checkBindings(path, input.body, claims);
166
+ return null;
167
+ }
168
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9zLWFjY2Vzcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy91dGlscy9wb3MtYWNjZXNzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7Ozs7O0dBTUc7O0FBb0JILHNDQU1DO0FBNkhELHdDQWdDQztBQXJLRCxNQUFNLEtBQUssR0FBYyxDQUFDLE9BQU8sRUFBRSxTQUFTLEVBQUUsU0FBUyxDQUFDLENBQUE7QUFFeEQsU0FBZ0IsYUFBYSxDQUFDLFdBQW9CO0lBQ2hELE1BQU0sR0FBRyxHQUFJLFdBQTZDLEVBQUUsR0FBcUMsQ0FBQTtJQUNqRyxJQUFJLENBQUMsR0FBRyxJQUFJLE9BQU8sR0FBRyxLQUFLLFFBQVE7UUFBRSxPQUFPLElBQUksQ0FBQTtJQUNoRCxJQUFJLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQztRQUFFLE9BQU8sSUFBSSxDQUFBO0lBQ3RFLElBQUksQ0FBQyxHQUFHLENBQUMsUUFBUSxJQUFJLENBQUMsR0FBRyxDQUFDLFVBQVU7UUFBRSxPQUFPLElBQUksQ0FBQTtJQUNqRCxPQUFPLEdBQWdCLENBQUE7QUFDekIsQ0FBQztBQUVELE1BQU0sYUFBYSxHQUFHLElBQUksR0FBRyxDQUFDLENBQUMsTUFBTSxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQTtBQUVqRSw2REFBNkQ7QUFDN0QsTUFBTSxjQUFjLEdBQUc7SUFDckIsaUJBQWlCO0lBQ2pCLGdCQUFnQjtJQUNoQixjQUFjO0lBQ2Qsa0JBQWtCO0lBQ2xCLDZCQUE2QjtDQUM5QixDQUFBO0FBRUQsdUNBQXVDO0FBQ3ZDLE1BQU0sc0JBQXNCLEdBQUc7SUFDN0Isd0JBQXdCO0lBQ3hCLGdCQUFnQjtJQUNoQix1QkFBdUI7SUFDdkIsZUFBZTtJQUNmLGtCQUFrQjtJ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
@@ -4,6 +4,9 @@ exports.regionFallbackCountry = regionFallbackCountry;
4
4
  exports.buildStoreShippingAddress = buildStoreShippingAddress;
5
5
  exports.pickCustomerBillingAddress = pickCustomerBillingAddress;
6
6
  exports.buildPosPaymentMetadata = buildPosPaymentMetadata;
7
+ exports.countPosOrderLineQty = countPosOrderLineQty;
8
+ exports.countPosOrderLineRows = countPosOrderLineRows;
9
+ exports.validatePosFinalizeCheckout = validatePosFinalizeCheckout;
7
10
  exports.resolvePosPayableTotal = resolvePosPayableTotal;
8
11
  exports.paymentCollectionNeedsMarkPaid = paymentCollectionNeedsMarkPaid;
9
12
  exports.shouldApplyAutoPromotions = shouldApplyAutoPromotions;
@@ -93,7 +96,62 @@ function asAmount(value) {
93
96
  const n = typeof value === "number" ? value : Number(value);
94
97
  return Number.isFinite(n) ? n : 0;
95
98
  }
96
- /** Payable after POSMAN — Medusa `total` is often still the pre-discount list. */
99
+ function roundMoney2(value) {
100
+ return Math.round(value * 100) / 100;
101
+ }
102
+ function countPosOrderLineQty(order) {
103
+ const items = Array.isArray(order?.items) ? order.items : [];
104
+ return items.reduce((sum, item) => {
105
+ if (!isRecord(item))
106
+ return sum;
107
+ const qty = asAmount(item.quantity);
108
+ return sum + Math.max(0, Math.floor(qty));
109
+ }, 0);
110
+ }
111
+ /** At least one line row on the order (guards empty `items: []`). */
112
+ function countPosOrderLineRows(order) {
113
+ const items = Array.isArray(order?.items) ? order.items : [];
114
+ return items.filter((item) => isRecord(item)).length;
115
+ }
116
+ /**
117
+ * Block empty carts and client charged_total that does not match the server payable.
118
+ */
119
+ function validatePosFinalizeCheckout(order, body) {
120
+ const lineRows = countPosOrderLineRows(order);
121
+ const itemCount = countPosOrderLineQty(order);
122
+ if (lineRows <= 0 || itemCount <= 0) {
123
+ return {
124
+ ok: false,
125
+ status: 400,
126
+ message: "Cannot complete a sale with no items in the cart.",
127
+ type: "EMPTY_CART",
128
+ code: "empty_cart",
129
+ };
130
+ }
131
+ const payable = roundMoney2(resolvePosPayableTotal(order));
132
+ if (payable <= 0) {
133
+ return {
134
+ ok: false,
135
+ status: 400,
136
+ message: "Cart total must be greater than zero before checkout.",
137
+ type: "INVALID_TOTAL",
138
+ code: "invalid_total",
139
+ };
140
+ }
141
+ if (typeof body.charged_total === "number" && body.charged_total > 0) {
142
+ const charged = roundMoney2(body.charged_total);
143
+ if (Math.abs(charged - payable) > 0.01) {
144
+ return {
145
+ ok: false,
146
+ status: 409,
147
+ message: `Charged amount (${charged}) does not match cart total (${payable}).`,
148
+ type: "TOTAL_MISMATCH",
149
+ code: "total_mismatch",
150
+ };
151
+ }
152
+ }
153
+ return { ok: true, payable, itemCount };
154
+ }
97
155
  function resolvePosPayableTotal(order) {
98
156
  if (!order)
99
157
  return 0;
@@ -174,4 +232,4 @@ function readAddress1(value) {
174
232
  return "";
175
233
  return typeof value.address_1 === "string" ? value.address_1.trim() : "";
176
234
  }
177
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9zLWZpbmFsaXplLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3V0aWxzL3Bvcy1maW5hbGl6ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQWdDQSxzREFNQztBQUVELDhEQWtDQztBQUVELGdFQW1DQztBQUVELDBEQWlEQztBQVFELHdEQWdEQztBQUVELHdFQUdDO0FBU0QsOERBRUM7QUFFRCxvQ0FJQztBQUVELG9DQUdDO0FBek5ELFNBQVMsUUFBUSxDQUFDLEtBQWM7SUFDOUIsT0FBTyxPQUFPLENBQUMsS0FBSyxJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQTtBQUM3RSxDQUFDO0FBRUQsU0FBZ0IscUJBQXFCLENBQ25DLE1BQXVFO0lBRXZFLE1BQU0sR0FBRyxHQUFHLE1BQU0sRUFBRSxTQUFTLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsRUFBRSxLQUFLLEtBQUssUUFBUSxJQUFJLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDeEYsRUFBRSxLQUFLLENBQUE7SUFDVCxPQUFPLENBQUMsR0FBRyxJQUFJLElBQUksQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFBO0FBQ3BDLENBQUM7QUFFRCxTQUFnQix5QkFBeUIsQ0FDdkMsYUFXb0IsRUFDcEIsTUFBdUU7SUFFdkUsSUFBSSxDQUFDLGFBQWE7UUFBRSxPQUFPLElBQUksQ0FBQTtJQUUvQixNQUFNLElBQUksR0FBRyxhQUFhLENBQUMsT0FBTyxDQUFBO0lBQ2xDLE1BQU0sU0FBUyxHQUFHLENBQUMsYUFBYSxDQUFDLElBQUksSUFBSSxPQUFPLENBQUMsQ0FBQyxJQUFJLEVBQUUsSUFBSSxPQUFPLENBQUE7SUFDbkUsTUFBTSxRQUFRLEdBQUcsQ0FBQyxJQUFJLEVBQUUsU0FBUyxJQUFJLEVBQUUsQ0FBQyxDQUFDLElBQUksRUFBRSxJQUFJLFNBQVMsQ0FBQTtJQUM1RCxNQUFNLE9BQU8sR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLFlBQVksSUFBSSxFQUFFLENBQUMsQ0FBQyxJQUFJLEVBQUUsSUFBSSxxQkFBcUIsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFBO0lBRWxHLE9BQU87UUFDTCxVQUFVLEVBQUUsS0FBSztRQUNqQixTQUFTLEVBQUUsUUFBUTtRQUNuQixPQUFPLEVBQUUsU0FBUztRQUNsQixTQUFTLEVBQUUsUUFBUTtRQUNuQixTQUFTLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsSUFBSSxTQUFTO1FBQy9DLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLFNBQVM7UUFDckMsUUFBUSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLElBQUksU0FBUztRQUM3QyxXQUFXLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUUsSUFBSSxTQUFTO1FBQ25ELFlBQVksRUFBRSxPQUFPO1FBQ3JCLEtBQUssRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxJQUFJLFNBQVM7S0FDeEMsQ0FBQTtBQUNILENBQUM7QUFFRCxTQUFnQiwwQkFBMEIsQ0FDeEMsUUFNYSxFQUNiLFlBQXNDO0lBRXRDLE1BQU0sU0FBUyxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUE7SUFDOUUsTUFBTSxNQUFNLEdBQ1YsU0FBUyxDQUFDLElBQUksQ0FDWixDQUFDLE9BQU8sRUFBRSxFQUFFLENBQ1YsT0FBTyxDQUFDLGtCQUFrQixJQUFJLE9BQU8sQ0FBQyxFQUFFLEtBQUssUUFBUSxFQUFFLDBCQUEwQixDQUNwRixJQUFJLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQTtJQUVuQixJQUFJLENBQUMsTUFBTTtRQUFFLE9BQU8sWUFBWSxJQUFJLFNBQVMsQ0FBQTtJQUU3QyxPQUFPO1FBQ0wsVUFBVSxFQUFFLE1BQU0sQ0FBQyxVQUFVLElBQUksU0FBUztRQUMxQyxTQUFTLEVBQUUsTUFBTSxDQUFDLFNBQVMsSUFBSSxTQUFTO1FBQ3hDLE9BQU8sRUFBRSxNQUFNLENBQUMsT0FBTyxJQUFJLFNBQVM7UUFDcEMsU0FBUyxFQUFFLE1BQU0sQ0FBQyxTQUFTLElBQUksWUFBWSxFQUFFLFNBQVMsSUFBSSxPQUFPO1FBQ2pFLFNBQVMsRUFBRSxNQUFNLENBQUMsU0FBUyxJQUFJLFNBQVM7UUFDeEMsV0FBVyxFQUFFLE1BQU0sQ0FBQyxXQUFXLElBQUksU0FBUztRQUM1QyxJQUFJLEVBQUUsTUFBTSxDQUFDLElBQUksSUFBSSxTQUFTO1FBQzlCLFFBQVEsRUFBRSxNQUFNLENBQUMsUUFBUSxJQUFJLFNBQVM7UUFDdEMsWUFBWSxFQUFFLENBQ1osTUFBTSxDQUFDLFlBQVk7WUFDbkIsWUFBWSxFQUFFLFlBQVk7WUFDMUIsSUFBSSxDQUNMLENBQUMsV0FBVyxFQUFFO1FBQ2YsS0FBSyxFQUFFLE1BQU0sQ0FBQyxLQUFLLElBQUksU0FBUztLQUNqQyxDQUFBO0FBQ0gsQ0FBQztBQUVELFNBQWdCLHVCQUF1QixDQUFDLEtBYXZDO0lBQ0MsTUFBTSxTQUFTLEdBQ2IsT0FBTyxLQUFLLENBQUMsVUFBVSxLQUFLLFFBQVEsSUFBSSxNQUFNLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUM7UUFDdkUsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQzNDLENBQUMsQ0FBQyxTQUFTLENBQUE7SUFDZixNQUFNLFVBQVUsR0FDZCxPQUFPLEtBQUssQ0FBQyxvQkFBb0IsS0FBSyxRQUFRLElBQUksTUFBTSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsb0JBQW9CLENBQUM7UUFDM0YsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLG9CQUFvQixDQUFDLENBQUM7UUFDckQsQ0FBQyxDQUFDLFNBQVMsQ0FBQTtJQUNmLE1BQU0sWUFBWSxHQUNoQixPQUFPLEtBQUssQ0FBQyxhQUFhLEtBQUssUUFBUSxJQUFJLEtBQUssQ0FBQyxhQUFhLEdBQUcsQ0FBQztRQUNoRSxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsYUFBYSxHQUFHLEdBQUcsQ0FBQyxHQUFHLEdBQUc7UUFDN0MsQ0FBQyxDQUFDLFNBQVMsQ0FBQTtJQUNmLE1BQU0sZUFBZSxHQUNuQixPQUFPLEtBQUssQ0FBQyxnQkFBZ0IsS0FBSyxRQUFRLElBQUksS0FBSyxDQUFDLGdCQUFnQixHQUFHLENBQUM7UUFDdEUsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLGdCQUFnQixHQUFHLEdBQUcsQ0FBQyxHQUFHLEdBQUc7UUFDaEQsQ0FBQyxDQUFDLFNBQVMsQ0FBQTtJQUVmLE9BQU87UUFDTCxNQUFNLEVBQUUsS0FBSztRQUNiLGtCQUFrQixFQUFFLEtBQUssQ0FBQyxjQUFjO1FBQ3hDLEdBQUcsQ0FBQyxZQUFZLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLGlCQUFpQixFQUFFLFlBQVksRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDcEUsR0FBRyxDQUFDLGVBQWUsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsb0JBQW9CLEVBQUUsZUFBZSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUM3RSxHQUFHLENBQUMsT0FBTyxLQUFLLENBQUMsYUFBYSxLQUFLLFFBQVEsSUFBSSxLQUFLLENBQUMsYUFBYSxHQUFHLENBQUM7WUFDcEUsQ0FBQyxDQUFDLEVBQUUsaUJBQWlCLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsYUFBYSxHQUFHLEdBQUcsQ0FBQyxHQUFHLEdBQUcsRUFBRTtZQUNwRSxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQ1AsZ0JBQWdCLEVBQUUsSUFBSSxJQUFJLEVBQUUsQ0FBQyxXQUFXLEVBQUU7UUFDMUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLEVBQUUsY0FBYyxFQUFFLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQ3pFLEdBQUcsQ0FBQyxLQUFLLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxDQUFDLEVBQUUsbUJBQW1CLEVBQUUsS0FBSyxDQUFDLG1CQUFtQixFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUN4RixHQUFHLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsRUFBRSxjQUFjLEVBQUUsS0FBSyxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDakUsR0FBRyxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLEVBQUUsZUFBZSxFQUFFLEtBQUssQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQ3BFLEdBQUcsQ0FBQyxLQUFLLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLEVBQUUsb0JBQW9CLEVBQUUsS0FBSyxDQUFDLGdCQUFnQixFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUNuRixHQUFHLENBQUMsS0FBSyxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsRUFBRSxrQkFBa0IsRUFBRSxLQUFLLENBQUMsY0FBYyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUM3RSxHQUFHLENBQUMsU0FBUyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxjQUFjLEVBQUUsU0FBUyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUMzRCxHQUFHLENBQUMsVUFBVSxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSx3QkFBd0IsRUFBRSxVQUFVLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO0tBQ3hFLENBQUE7QUFDSCxDQUFDO0FBRUQsU0FBUyxRQUFRLENBQUMsS0FBYztJQUM5QixNQUFNLENBQUMsR0FBRyxPQUFPLEtBQUssS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFBO0lBQzNELE9BQU8sTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUE7QUFDbkMsQ0FBQztBQUVELGtGQUFrRjtBQUNsRixTQUFnQixzQkFBc0IsQ0FBQyxLQUFpRDtJQUN0RixJQUFJLENBQUMsS0FBSztRQUFFLE9BQU8sQ0FBQyxDQUFBO0lBQ3BCLE1BQU0sS0FBSyxHQUFHLFFBQVEsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUE7SUFDbkMsTUFBTSxJQUFJLEdBQUcsUUFBUSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFBO0lBQzNELE1BQU0sT0FBTyxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQTtJQUNoRCxJQUFJLE9BQU8sR0FBRyxDQUFDO1FBQUUsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sR0FBRyxHQUFHLENBQUMsR0FBRyxHQUFHLENBQUE7SUFFdkQsTUFBTSxRQUFRLEdBQUcsUUFBUSxDQUFDLEtBQUssQ0FBQyxjQUFjLENBQUMsQ0FBQTtJQUMvQyxNQUFNLFFBQVEsR0FBRyxRQUFRLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxJQUFJLFFBQVEsQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUE7SUFDdkUsTUFBTSxLQUFLLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQTtJQUMzRCxNQUFNLFNBQVMsR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxFQUFFLElBQUksRUFBRSxFQUFFO1FBQzNDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDO1lBQUUsT0FBTyxHQUFHLENBQUE7UUFDL0IsTUFBTSxHQUFHLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUE7UUFDeEMsTUFBTSxRQUFRLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFBO1FBQzdELE1BQU0sUUFBUSxHQUFHLFFBQVEsQ0FBQyxRQUFRLENBQUMsY0FBYyxDQUFDLENBQUE7UUFDbEQsTUFBTSxJQUFJLEdBQUcsUUFBUSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFBO1FBQ2hFLE9BQU8sR0FBRyxHQUFHLElBQUksR0FBRyxHQUFHLENBQUE7SUFDekIsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFBO0lBQ0wsTUFBTSxLQUFLLEdBQUcsUUFBUSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxTQUFTLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQTtJQUV6RSxJQUFJLFNBQVMsR0FBRyxDQUFDLENBQUE7SUFDakIsS0FBSyxNQUFNLElBQUksSUFBSSxLQUFLLEVBQUUsQ0FBQztRQUN6QixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDO1lBQUUsU0FBUTtRQUNqRSxLQUFLLE1BQU0sR0FBRyxJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUNuQyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQztnQkFBRSxTQUFRO1lBQzVCLE1BQU0sSUFBSSxHQUFHLE9BQU8sR0FBRyxDQUFDLElBQUksS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQTtZQUN6RCxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUM7Z0JBQUUsU0FBUTtZQUN6QyxTQUFTLElBQUksSUFBSSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUE7UUFDN0MsQ0FBQztJQUNILENBQUM7SUFFRCxJQUFJLE9BQU8sR0FBRyxDQUFDLENBQUE7SUFDZixNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsbUJBQW1CLENBQUE7SUFDdkMsSUFBSSxRQUFRLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztRQUNyQixJQUFJLE1BQU0sQ0FBQyxhQUFhLEtBQUssWUFBWSxFQUFFLENBQUM7WUFDMUMsTUFBTSxHQUFHLEdBQUcsUUFBUSxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQTtZQUMzQyxJQUFJLEdBQUcsR0FBRyxDQUFDLElBQUksR0FBRyxJQUFJLEdBQUcsSUFBSSxLQUFLLEdBQUcsQ0FBQyxFQUFFLENBQUM7Z0JBQ3ZDLE9BQU8sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLEdBQUcsR0FBRyxDQUFDLEdBQUcsR0FBRyxDQUFDLEdBQUcsR0FBRyxDQUFDLEdBQUcsR0FBRyxDQUFBO1lBQ3pELENBQUM7UUFDSCxDQUFDO2FBQU0sQ0FBQztZQUNOLE9BQU8sR0FBRyxRQUFRLENBQUMsTUFBTSxDQUFDLGNBQWMsSUFBSSxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUE7UUFDNUQsQ0FBQztJQUNILENBQUM7SUFFRCxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxTQUFTLEVBQUUsT0FBTyxDQUFDLENBQUE7SUFDbEQsSUFBSSxHQUFHLElBQUksQ0FBQztRQUFFLE9BQU8sS0FBSyxDQUFBO0lBQzFCLElBQUksS0FBSyxHQUFHLENBQUMsSUFBSSxLQUFLLEdBQUcsSUFBSSxHQUFHLEtBQUs7UUFBRSxPQUFPLEtBQUssQ0FBQTtJQUNuRCxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFLLElBQUksS0FBSyxDQUFDLEdBQUcsR0FBRyxDQUFDLEdBQUcsR0FBRyxDQUFDLEdBQUcsR0FBRyxDQUFBO0FBQ3BFLENBQUM7QUFFRCxTQUFnQiw4QkFBOEIsQ0FBQyxNQUFzQjtJQUNuRSxNQUFNLFVBQVUsR0FBRyxNQUFNLENBQUMsTUFBTSxJQUFJLEVBQUUsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFBO0lBQ3JELE9BQU8sVUFBVSxLQUFLLFdBQVcsSUFBSSxVQUFVLEtBQUssWUFBWSxJQUFJLFVBQVUsS0FBSyxVQUFVLENBQUE7QUFDL0YsQ0FBQztBQUVEOzs7Ozs7R0FNRztBQUNILFNBQWdCLHlCQUF5QixDQUFDLGtCQUEyQjtJQUNuRSxPQUFPLElBQUksQ0FBQTtBQUNiLENBQUM7QUFFRCxTQUFnQixZQUFZLENBQUMsS0FBaUQ7SUFDNUUsSUFBSSxDQUFDLEtBQUs7UUFBRSxPQUFPLEtBQUssQ0FBQTtJQUN4QixJQUFJLEtBQUssQ0FBQyxjQUFjLEtBQUssSUFBSTtRQUFFLE9BQU8sSUFBSSxDQUFBO0lBQzlDLE9BQU8sTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLElBQUksRUFBRSxDQUFDLENBQUMsV0FBVyxFQUFFLEtBQUssT0FBTyxDQUFBO0FBQzdELENBQUM7QUFFRCxTQUFnQixZQUFZLENBQUMsS0FBYztJQUN6QyxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQztRQUFFLE9BQU8sRUFBRSxDQUFBO0lBQy9CLE9BQU8sT0FBTyxLQUFLLENBQUMsU0FBUyxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFBO0FBQzFFLENBQUMifQ==
235
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9zLWZpbmFsaXplLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3V0aWxzL3Bvcy1maW5hbGl6ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQWdDQSxzREFNQztBQUVELDhEQWtDQztBQUVELGdFQW1DQztBQUVELDBEQWlEQztBQWdCRCxvREFPQztBQUdELHNEQUdDO0FBS0Qsa0VBeUNDO0FBRUQsd0RBZ0RDO0FBRUQsd0VBR0M7QUFTRCw4REFFQztBQUVELG9DQUlDO0FBRUQsb0NBR0M7QUE5UkQsU0FBUyxRQUFRLENBQUMsS0FBYztJQUM5QixPQUFPLE9BQU8sQ0FBQyxLQUFLLElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFBO0FBQzdFLENBQUM7QUFFRCxTQUFnQixxQkFBcUIsQ0FDbkMsTUFBdUU7SUFFdkUsTUFBTSxHQUFHLEdBQUcsTUFBTSxFQUFFLFNBQVMsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxFQUFFLEtBQUssS0FBSyxRQUFRLElBQUksQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUN4RixFQUFFLEtBQUssQ0FBQTtJQUNULE9BQU8sQ0FBQyxHQUFHLElBQUksSUFBSSxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUE7QUFDcEMsQ0FBQztBQUVELFNBQWdCLHlCQUF5QixDQUN2QyxhQVdvQixFQUNwQixNQUF1RTtJQUV2RSxJQUFJLENBQUMsYUFBYTtRQUFFLE9BQU8sSUFBSSxDQUFBO0lBRS9CLE1BQU0sSUFBSSxHQUFHLGFBQWEsQ0FBQyxPQUFPLENBQUE7SUFDbEMsTUFBTSxTQUFTLEdBQUcsQ0FBQyxhQUFhLENBQUMsSUFBSSxJQUFJLE9BQU8sQ0FBQyxDQUFDLElBQUksRUFBRSxJQUFJLE9BQU8sQ0FBQTtJQUNuRSxNQUFNLFFBQVEsR0FB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
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.posStaffEmail = posStaffEmail;
4
+ exports.requireSecretKey = requireSecretKey;
5
+ /** POS staff users never sign in with a password, so the address only needs to be unique. */
6
+ function posStaffEmail(key) {
7
+ return `pos-staff+${key.toLowerCase()}@staff.pos.vyaparnext.com`;
8
+ }
9
+ function requireSecretKey(req, res) {
10
+ if (req.auth_context?.actor_type === "api-key")
11
+ return true;
12
+ res.status(403).json({ message: "Requires a secret API key", type: "POS_FORBIDDEN" });
13
+ return false;
14
+ }
15
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9zLXN0YWZmLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3V0aWxzL3Bvcy1zdGFmZi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUdBLHNDQUVDO0FBRUQsNENBSUM7QUFURCw2RkFBNkY7QUFDN0YsU0FBZ0IsYUFBYSxDQUFDLEdBQVc7SUFDdkMsT0FBTyxhQUFhLEdBQUcsQ0FBQyxXQUFXLEVBQUUsMkJBQTJCLENBQUE7QUFDbEUsQ0FBQztBQUVELFNBQWdCLGdCQUFnQixDQUFDLEdBQStCLEVBQUUsR0FBbUI7SUFDbkYsSUFBSSxHQUFHLENBQUMsWUFBWSxFQUFFLFVBQVUsS0FBSyxTQUFTO1FBQUUsT0FBTyxJQUFJLENBQUE7SUFDM0QsR0FBRyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsSUFBSSxFQUFFLGVBQWUsRUFBRSxDQUFDLENBQUE7SUFDckYsT0FBTyxLQUFLLENBQUE7QUFDZCxDQUFDIn0=
package/README.md CHANGED
@@ -39,6 +39,20 @@ All routes keep the `/admin/pos/*` paths used by the `medusa-pos` client.
39
39
  | POST | `/admin/pos/orders/:id/returns` | POS return (`cash` / `wallet` / `gift_card`) |
40
40
  | POST | `/admin/pos/orders/:id/cancel` | Void sale (full return + cash; `pos_voided`) |
41
41
  | … | `/admin/pos/*` | Finalize, payments, catalog, etc. |
42
+ | POST | `/admin/pos/staff` | Upsert the Medusa user for an app.VyaparNext POS staff member (secret API key only) |
43
+ | DELETE | `/admin/pos/staff/:key` | Remove that user (secret API key only) |
44
+
45
+ ## app.VyaparNext POS sign-in (0.0.24+)
46
+
47
+ The POS signs in to app.VyaparNext, not to Medusa. The deployer mints a short-lived admin JWT (signed with the store's `JWT_SECRET`) for the chosen staff member, with a `pos` claim carrying the role and the till's assigned stock location, sales channel and region.
48
+
49
+ A middleware on `/admin/*` enforces that claim on every request:
50
+
51
+ - **All POS roles** — no API keys, invites, user management, `/admin/pos/staff`, or workflow executions.
52
+ - **Manager / cashier** — cannot change store settings (locations, regions, channels, tax, shipping, …). Any `location_id` / `stock_location_id` / `sales_channel_id` / `region_id` in a write must match the assigned one.
53
+ - **Cashier** — additionally no catalog, pricing, promotion or inventory edits, no analytics/reports, and no voids, returns, refunds, claims or exchanges.
54
+
55
+ Requests without a `pos` claim (normal admin logins, API keys) are not affected. Finalized POS orders record `pos_staff_id`, `pos_staff_role` and `pos_terminal_id` in metadata.
42
56
 
43
57
  ## Inventory & fulfillment on finalize
44
58
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "medusa-pos-plugin",
3
- "version": "0.0.23",
3
+ "version": "0.0.26",
4
4
  "description": "Medusa v2 POS operations: draft carts, finalize, payments, returns, catalog, refunds.",
5
5
  "author": "Medusa (https://medusajs.com)",
6
6
  "license": "MIT",