diff --git a/docker-compose.yml b/docker-compose.yml index d89540ffb592f680c58a099a7353241bf6636b5f..8a509bd49acb16e6751ecfae90d94ada84e2985e 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -29,7 +29,7 @@ services: ports: - 8085:3000 - 9229:9229 - redis: + express_redis: build: context: ./build/redis networks: diff --git a/pass/config/default.json b/pass/config/default.json index dcdadd16584b842f063dca1e0e9ac1a07e02da7c..8aa22517b4d261ae37dc32969f1235bca427b932 100644 --- a/pass/config/default.json +++ b/pass/config/default.json @@ -24,7 +24,7 @@ "vat": 7 }, "redis": { - "host": "redis" + "host": "express_redis" }, "storage": { "data_path": "/data" @@ -81,4 +81,4 @@ "client_id": "<INSERT_PAYPAL_CLIENT_ID>" } } -} +} \ No newline at end of file diff --git a/pass/resources/js/enter.js b/pass/resources/js/enter.js index 0743990c0aeeb4496ee3d067f7ab9c44de552707..1fecbb9b571a66dc50f08bbb5ba1caa3361c90cb 100644 --- a/pass/resources/js/enter.js +++ b/pass/resources/js/enter.js @@ -5,7 +5,9 @@ document.getElementById("qr-scan").addEventListener("pointerup", e => { document.querySelectorAll("#scan-qr-option .error").forEach(error => { error.style.display = "none"; }) - import('/js/qr-scanner.min.js').then(async module => { + let baseDir = document.getElementById("key-form").action.replace(/\/key\/enter$/, ""); + console.log(baseDir); + import(`${baseDir}/js/qr-scanner.min.js`).then(async module => { const QrScanner = module.default; if (! await QrScanner.hasCamera()) { @@ -28,7 +30,7 @@ document.getElementById("qr-scan").addEventListener("pointerup", e => { } let key = url.searchParams.get("key"); if (key !== null) { - location.href = "/key/" + encodeURIComponent(key); + location.href = `${baseDir}/key/` + encodeURIComponent(key); } else { document.getElementById("qr-decode-error").style.display = "block"; stopScanning(); diff --git a/pass/routes/key.js b/pass/routes/key.js index 1852de28f052ee700dbf3acb0e70de27b2b493d2..4ff088ffec28ced030729687b2665593f3b6c16b 100644 --- a/pass/routes/key.js +++ b/pass/routes/key.js @@ -12,7 +12,7 @@ var Key = require("../app/Key"); router.get("/create", function (req, res, next) { Key.GET_NEW_KEY().then((key) => { - res.redirect("/key/" + key + "?new=true"); + res.redirect(`${res.locals.baseDir}/key/` + key + "?new=true"); }); }); @@ -25,7 +25,7 @@ router.get("/remove", (req, res) => { router.get("/enter", function (req, res, next) { if (req.cookies.key) { - res.redirect("/key/" + encodeURIComponent(req.cookies.key)); + res.redirect(`${res.locals.baseDir}/key/` + encodeURIComponent(req.cookies.key)); } else { res.render("login/key"); } @@ -47,12 +47,11 @@ router.post("/enter", upload.single('file'), if (!errors.isEmpty()) { res.render("login/key", { errors: errors.array() }); return; - return res.status(400).json({ errors: errors.array() }); } let req_data = matchedData(req); if (typeof req_data.key !== "undefined") { - res.redirect("/key/" + req_data.key); + res.redirect(`${res.locals.baseDir}/key/` + req_data.key); } else if (typeof req.file === "undefined") { res.render("login/key", { errors: "File not provided or invalid" }); } else { @@ -79,7 +78,7 @@ router.post("/enter", upload.single('file'), } let key = url.searchParams.get("key"); if (key !== null) { - res.redirect("/key/" + encodeURIComponent(key)); + res.redirect(`${res.locals.baseDir}/key/` + encodeURIComponent(key)); } else { res.render("login/key", { errors: ["Error parsing URL"] }); } diff --git a/pass/views/login/key.ejs b/pass/views/login/key.ejs index 27277b2b58d4fe421b7f67b2dabf8b3586898364..a7c47f50499b609600bf9173d57467fa6842c3aa 100644 --- a/pass/views/login/key.ejs +++ b/pass/views/login/key.ejs @@ -1,29 +1,18 @@ -<%- include('../templates/page_header', {css: ["/styles/key/enter.css"], js: -["/js/enter.js"]}); %> +<%- include('../templates/page_header', {css: [`${baseDir}/styles/key/enter.css`], js:[`${baseDir}/js/enter.js`]}); %> <div id="enter"> <div id="form"> <div id="direct-option" class="enter-option"> <h3>Schlüssel eingeben</h3> - <form - id="key-form" - action="/key/enter" - method="post" - enctype="multipart/form-data" - > - <input - type="text" - name="key" - id="key" - placeholder="Schlüssel eingeben" - /> + <form id="key-form" action="<%= baseDir _%>/key/enter" method="post" enctype="multipart/form-data"> + <input type="text" name="key" id="key" placeholder="Schlüssel eingeben" /> </form> </div> <div id="file-option" class="enter-option"> <div class="divider">oder</div> <div id="file-selector"> <label for="file"> - <img src="/images/upload.svg" alt="" /> + <img src="<%= baseDir _%>/images/upload.svg" alt="" /> <span> Sicherungsdatei hochladen </span> </label> <input type="file" name="file" id="file" form="key-form" /> @@ -32,7 +21,7 @@ <div id="scan-qr-option" class="enter-option"> <div class="divider">oder</div> <a href="javascript:void(0);" id="qr-scan"> - <img src="/images/camera.svg" alt="" /> + <img src="<%= baseDir _%>/images/camera.svg" alt="" /> <span> QR-Code Scannen </span> </a> <div id="qr-camera-error" class="error">Keine Kamera verfügbar</div> @@ -56,4 +45,4 @@ </div> </div> -<%- include('../templates/page_footer'); -%> +<%- include('../templates/page_footer'); -%> \ No newline at end of file