From 420f67ae8a6826152888f935f36eead483b58420 Mon Sep 17 00:00:00 2001 From: Dominik Hebeler <dominik@hebeler.club> Date: Mon, 21 Aug 2023 10:07:49 +0200 Subject: [PATCH] load key by payment ID --- pass/routes/admin/index.js | 48 ++++++++++++++++++++-------------- pass/views/admin/key/index.ejs | 26 ++++-------------- 2 files changed, 34 insertions(+), 40 deletions(-) diff --git a/pass/routes/admin/index.js b/pass/routes/admin/index.js index 91a1a21..2e4a801 100644 --- a/pass/routes/admin/index.js +++ b/pass/routes/admin/index.js @@ -128,9 +128,9 @@ router.get( let hasher = crypto.createHash("sha256"); hasher.update( reqData.company + - res.locals.name + - res.locals.email + - res.locals.address + res.locals.name + + res.locals.email + + res.locals.address ); res.locals.datahash = hasher.digest("hex"); res.render("admin/payments/receipt"); @@ -333,16 +333,29 @@ router.get("/key", (req, res) => { router.post("/key", (req, res) => { if (req.body.payment_id.length > 0) { - return PaymentReference.LOAD_FROM_PUBLIC_ID(req.body.payment_id) - .then((payment_reference) => { - return res.redirect( - `${res.baseDir}/admin/key/${payment_reference.key.get_key()}` - ); - }) - .catch((reason) => { - console.error(reason); - return res.redirect(`${res.baseDir}/admin/key`); - }); + // Either Payment ID or PaymentReference ID can be Supplied + if (req.body.payment_id.indexOf("A") == 0) { + return Payment.LOAD_FROM_PUBLIC_ID(req.body.payment_id) + .then(payment => { + return PaymentReference.LOAD_FROM_ID(payment.payment_reference_id) + .then(payment_reference => { + return res.redirect( + `${res.baseDir}/admin/key/${payment_reference.key.get_key()}` + ); + }) + }); + } else { + return PaymentReference.LOAD_FROM_PUBLIC_ID(req.body.payment_id) + .then((payment_reference) => { + return res.redirect( + `${res.baseDir}/admin/key/${payment_reference.key.get_key()}` + ); + }) + .catch((reason) => { + console.error(reason); + return res.redirect(`${res.baseDir}/admin/key`); + }); + } } else { return Key.GET_KEY(req.body.key, false).then((key) => { return res.redirect(`${res.baseDir}/admin/key/${key.get_key()}`); @@ -424,8 +437,7 @@ router.post( .then((payment_reference) => payment_reference.chargeKey()) .then(() => { res.redirect( - `${ - res.baseDir + `${res.baseDir }/admin/key/${res.locals.key.get_key()}?charge_success=true` ); }); @@ -440,8 +452,7 @@ router.post( const errors = validationResult(req); if (!errors.isEmpty()) { return res.redirect( - `${ - res.baseDir + `${res.baseDir }/admin/key/${res.locals.key.get_key()}?charge_success=true` ); } @@ -459,8 +470,7 @@ router.post( }) .then(() => { res.redirect( - `${ - res.baseDir + `${res.baseDir }/admin/key/${res.locals.key.get_key()}?charge_success=true` ); }); diff --git a/pass/views/admin/key/index.ejs b/pass/views/admin/key/index.ejs index 046bc8b..8026467 100644 --- a/pass/views/admin/key/index.ejs +++ b/pass/views/admin/key/index.ejs @@ -12,32 +12,16 @@ </ul> <form method="POST"> <div class="input-group"> - <label for="key" - ><%= req.t("key.key-input.label", {ns: "admin"}) _%></label - > - <input - type="text" - name="key" - id="key" - size="36" - placeholder="XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX" - /> + <label for="key"><%= req.t("key.key-input.label", {ns: "admin"}) _%></label> + <input type="text" name="key" id="key" size="36" placeholder="XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX" /> </div> <div class="input-group"> - <label for="payment_id" - ><%= req.t("key.payment-id-input.label", {ns: "admin"}) _%></label - > - <input - type="text" - name="payment_id" - id="payment_id" - size="36" - placeholder="ZXXXXXXX" - /> + <label for="payment_id"><%= req.t("key.payment-id-input.label", {ns: "admin"}) _%></label> + <input type="text" name="payment_id" id="payment_id" size="36" placeholder="ZXXXXXXX | AXXXXXXX" /> </div> <button class="button"> <%= req.t("key.key-input.submit", {ns: "admin"}) _%> </button> </form> </div> -<%- include('../../templates/page_footer'); -%> +<%- include('../../templates/page_footer'); -%> \ No newline at end of file -- GitLab