diff --git a/server/handlers/links.handler.js b/server/handlers/links.handler.js index e0be340..d74a852 100644 --- a/server/handlers/links.handler.js +++ b/server/handlers/links.handler.js @@ -504,6 +504,23 @@ async function redirect(req, res, next) { // 6. If link is protected, redirect to password page if (link.password) { + if ('authorization' in req.headers) { + const auth = req.headers.authorization; + const firstSpace = auth.indexOf(' '); + if (firstSpace !== -1) { + const method = auth.slice(0, firstSpace); + const payload = auth.slice(firstSpace + 1); + if (method === 'Basic') { + const decoded = Buffer.from(payload, 'base64').toString('utf8'); + const colon = decoded.indexOf(':'); + if (colon !== -1) { + const password = decoded.slice(colon + 1); + const matches = await bcrypt.compare(password, link.password); + if (matches) return res.redirect(link.target); + } + } + } + } res.render("protected", { title: "Protected short link", id: link.uuid diff --git a/server/views/partials/stats.hbs b/server/views/partials/stats.hbs index 9ccb896..f525b4c 100644 --- a/server/views/partials/stats.hbs +++ b/server/views/partials/stats.hbs @@ -82,7 +82,7 @@
-

Operation systems.

+

Operating systems.

diff --git a/static/scripts/stats.js b/static/scripts/stats.js index d395c06..cca2f24 100644 --- a/static/scripts/stats.js +++ b/static/scripts/stats.js @@ -310,7 +310,7 @@ function beautifyOsName(name) { } -// create operation systems chart +// create operating systems chart function createOsChart() { const canvases = document.querySelectorAll("canvas.os"); if (!canvases || !canvases.length) return;