From 4e252dfef5004993b0f3e6c963468d90ea617ff7 Mon Sep 17 00:00:00 2001 From: Dominik Hebeler <dominik@hebeler.club> Date: Wed, 22 Feb 2023 16:15:25 +0100 Subject: [PATCH] logout button --- pass/public/styles/base.less | 8 +++++++- pass/public/styles/misc/vars.less | 1 + pass/routes/key.js | 12 +++++++++++- pass/views/templates/page_header.ejs | 6 +++++- 4 files changed, 24 insertions(+), 3 deletions(-) diff --git a/pass/public/styles/base.less b/pass/public/styles/base.less index 860be6f..aed6245 100644 --- a/pass/public/styles/base.less +++ b/pass/public/styles/base.less @@ -115,13 +115,19 @@ button { text-decoration: none; background-color: @color-secondary; width: max-content; - &:hover { color: inherit; background-color: fade(@color-secondary, 70%); border-color: @color-main; color: fade(white, 90%); } + &.negative { + background-color: @color-negative; + &:hover { + background-color: fade(@color-negative, 70%); + color: white; + } + } } nav#primary-nav { diff --git a/pass/public/styles/misc/vars.less b/pass/public/styles/misc/vars.less index e8e1663..9b39a15 100644 --- a/pass/public/styles/misc/vars.less +++ b/pass/public/styles/misc/vars.less @@ -2,6 +2,7 @@ @color-secondary: #3a3af9; @color-main-hover: lighten(@color-main, 5%); @color-main-font-color: white; +@color-negative: rgba(255, 0, 0, 0.432); @font-color-on-white: #515151; diff --git a/pass/routes/key.js b/pass/routes/key.js index 1156cf9..1852de2 100644 --- a/pass/routes/key.js +++ b/pass/routes/key.js @@ -16,6 +16,13 @@ router.get("/create", function (req, res, next) { }); }); +router.get("/remove", (req, res) => { + if (req.cookies.key) { + res.clearCookie("key"); + } + res.redirect("/"); +}) + router.get("/enter", function (req, res, next) { if (req.cookies.key) { res.redirect("/key/" + encodeURIComponent(req.cookies.key)); @@ -106,6 +113,7 @@ router.use("/:key", param("key").isUUID(4), async (req, res, next) => { settings_url: metager_url, qr: qr_data_uri, }, + cookies: req.cookies, page: "fill", links: { fill_url: `/key/${req.params.key}`, @@ -116,7 +124,9 @@ router.use("/:key", param("key").isUUID(4), async (req, res, next) => { }); if (!req.data.admin && (!req.cookies.key || req.cookies.key !== req.data.key.key)) { - res.cookie("key", req.data.key.key); + res.cookie("key", req.data.key.key, { + sameSite: "lax" + }); } next("route"); diff --git a/pass/views/templates/page_header.ejs b/pass/views/templates/page_header.ejs index 80a2973..31c7495 100644 --- a/pass/views/templates/page_header.ejs +++ b/pass/views/templates/page_header.ejs @@ -42,7 +42,11 @@ <li><a href="#">Hilfe</a></li> <li class="whitespace"></li> <li><a href="/key/enter">Schlüssel verwalten</a></li> - <li><a href="/key/create" class="button">Starten</a></li> + <%_ if((typeof cookies !== "undefined" && typeof cookies.key !== "undefined") || typeof key !== "undefined") { _%> + <li><a href="/key/remove" class="button negative" id="key-remove">Schlüssel entfernen</a></li> + <%_ } else { _%> + <li><a href="/key/create" class="button">Starten</a></li> + <%_ } _%> </ul> </nav> <main> \ No newline at end of file -- GitLab