diff options
| author | Adam Soltys <[email protected]> | 2025-09-18 16:36:25 -0700 |
|---|---|---|
| committer | Adam Soltys <[email protected]> | 2025-09-18 16:38:11 -0700 |
| commit | 3ec79e2f938423d1442886454204973d804f37d9 (patch) | |
| tree | 472d55a4eef98a8a5368996eca892b77c3d96c11 | |
| parent | 7d11696ce6c555d3f0adc4a0da03d2c895d0a596 (diff) | |
| download | coinos-server-3ec79e2f938423d1442886454204973d804f37d9.tar.gz coinos-server-3ec79e2f938423d1442886454204973d804f37d9.zip | |
allow invoice owners to modify the webhook
| -rw-r--r-- | index.ts | 2 | ||||
| -rw-r--r-- | routes/invoices.ts | 15 |
2 files changed, 11 insertions, 6 deletions
@@ -47,7 +47,7 @@ app.get("/locations", locations.list); app.get("/invoice/:id", invoices.get); app.get("/invoices", auth, invoices.list); app.post("/invoice", optional, invoices.create); -app.post("/invoice/:id", invoices.update); +app.post("/invoice/:id", optional, invoices.update); app.post("/sign", auth, invoices.sign); app.get("/assetlinks.json", (_, res) => res.sendFile("assetlinks.json")); diff --git a/routes/invoices.ts b/routes/invoices.ts index 54b1a30b..7e98599e 100644 --- a/routes/invoices.ts +++ b/routes/invoices.ts @@ -53,13 +53,18 @@ export default { try { const { id } = req.params; const { body } = req; - if (body.invoice?.tip == null || body.invoice.tip < 0) fail("Invalid tip"); + const { tip, webhook, secret } = body.invoice; + if (tip == null || tip < 0) fail("Invalid tip"); let invoice = await g(`invoice:${id}`); - const user = await g(`user:${invoice.uid}`); - invoice.tip = body.invoice.tip; - invoice.webhook = body.invoice.webhook; - invoice.secret = body.invoice.secret; + const user = req.user || (await g(`user:${invoice.uid}`)); + + if (tip) invoice.tip = tip; + if (invoice.uid === user?.id) { + if (webhook) invoice.webhook = webhook; + if (secret) invoice.secret = secret; + } + invoice = await generate({ invoice, user }); await s(`invoice:${id}`, invoice); |
