From 6b59732aa14d416d26142b31f4c901c5e4cb247c Mon Sep 17 00:00:00 2001 From: stringsplit <77242831+nbitzz@users.noreply.github.com> Date: Sat, 30 Sep 2023 21:31:59 -0700 Subject: [PATCH] mail-unlink: initial --- src/server/routes/authRoutes.ts | 10 ++++++++++ src/svelte/elem/prompts/account.js | 29 +++++++++++++++++++++++++++++ 2 files changed, 39 insertions(+) diff --git a/src/server/routes/authRoutes.ts b/src/server/routes/authRoutes.ts index ae3fc87..e253b2b 100644 --- a/src/server/routes/authRoutes.ts +++ b/src/server/routes/authRoutes.ts @@ -314,6 +314,16 @@ authRoutes.get("/confirm_email/:code", requiresAccount, (req,res) => { } }) +authRoutes.post("/remove_email", requiresAccount, (req,res) => { + let acc = res.locals.acc as Accounts.Account + + if (acc.email) { + delete acc.email; + Accounts.save() + } + else ServeError(res, 400, "email not attached") +}) + let pwReset = new Map() let prcIdx = new Map() diff --git a/src/svelte/elem/prompts/account.js b/src/svelte/elem/prompts/account.js index 940f830..df25623 100644 --- a/src/svelte/elem/prompts/account.js +++ b/src/svelte/elem/prompts/account.js @@ -115,6 +115,35 @@ export function forgotPassword(optPicker) { }) } +export function emailPotentialRemove(optPicker) { + optPicker.picker("What would you like to do?",[ + { + name: "Set a new email", + icon: "/static/assets/icons/mail.svg", + id: true + }, + { + name: "Disconnect email", + icon: "/static/assets/icons/delete.svg", + description: "", + id: "disconnect" + } + ]).then((exp) => { + if (exp && exp.selected) { + switch (exp.selected) { + case "set": + emailChange(optPicker); + case "disconnect": + fetch("/auth/remove_email", {method: "POST"}).then((response) => { + if (response.status != 200) { + optPicker.picker(`${response.status} ${response.headers.get("x-backup-status-message") || response.statusText || ""}`,[]) + } + }) + } + } + }) +} + export function emailChange(optPicker) { optPicker.picker("Change email",[ {