mirror of
https://github.com/mollersuite/monofile.git
synced 2024-11-24 06:36:27 -08:00
Merge pull request #9 from nbitzz/mail-unlink-lol
Allow user to detach their email
This commit is contained in:
commit
fb57af0362
1
assets/icons/change_email.svg
Normal file
1
assets/icons/change_email.svg
Normal file
|
@ -0,0 +1 @@
|
||||||
|
<svg width="24" height="24" fill="none" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M23 6.5a5.5 5.5 0 1 0-11 0 5.5 5.5 0 0 0 11 0ZM18 7l.001 2.504a.5.5 0 1 1-1 0V7h-2.505a.5.5 0 0 1 0-1H17V3.5a.5.5 0 0 1 1 0V6h2.497a.5.5 0 0 1 0 1H18Zm-.5 6a6.478 6.478 0 0 0 4.5-1.81v5.56a3.25 3.25 0 0 1-3.066 3.245L18.75 20H5.25a3.25 3.25 0 0 1-3.245-3.066L2 16.75V8.608l9.652 5.056a.75.75 0 0 0 .696 0l2.417-1.266A6.477 6.477 0 0 0 17.5 13ZM5.25 4h6.248A6.479 6.479 0 0 0 11 6.5c0 1.993.897 3.776 2.308 4.968L12 12.153l-9.984-5.23a3.25 3.25 0 0 1 3.048-2.918L5.25 4Z" fill="#DDDDDD"/></svg>
|
After Width: | Height: | Size: 597 B |
1
assets/icons/disconnect_email.svg
Normal file
1
assets/icons/disconnect_email.svg
Normal file
|
@ -0,0 +1 @@
|
||||||
|
<svg width="24" height="24" fill="none" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M23 6.5a5.5 5.5 0 1 1-11 0 5.5 5.5 0 0 1 11 0Zm-7.146-2.354a.5.5 0 0 0-.708.708L16.793 6.5l-1.647 1.646a.5.5 0 0 0 .708.708L17.5 7.207l1.646 1.647a.5.5 0 0 0 .708-.708L18.207 6.5l1.647-1.646a.5.5 0 0 0-.708-.708L17.5 5.793l-1.646-1.647ZM17.5 13a6.478 6.478 0 0 0 4.5-1.81v5.56a3.25 3.25 0 0 1-3.066 3.245L18.75 20H5.25a3.25 3.25 0 0 1-3.245-3.066L2 16.75V8.608l9.652 5.056a.75.75 0 0 0 .696 0l2.417-1.266A6.477 6.477 0 0 0 17.5 13ZM5.25 4h6.248A6.479 6.479 0 0 0 11 6.5c0 1.993.897 3.776 2.308 4.968L12 12.153l-9.984-5.23a3.25 3.25 0 0 1 3.048-2.918L5.25 4Z" fill="#DDDDDD"/></svg>
|
After Width: | Height: | Size: 685 B |
|
@ -314,6 +314,17 @@ 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()
|
||||||
|
res.send("email detached")
|
||||||
|
}
|
||||||
|
else ServeError(res, 400, "email not attached")
|
||||||
|
})
|
||||||
|
|
||||||
let pwReset = new Map<string, {code: string, expiry: NodeJS.Timeout, requestedAt:number}>()
|
let pwReset = new Map<string, {code: string, expiry: NodeJS.Timeout, requestedAt:number}>()
|
||||||
let prcIdx = new Map<string, string>()
|
let prcIdx = new Map<string, string>()
|
||||||
|
|
||||||
|
|
|
@ -115,6 +115,39 @@ 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/change_email.svg",
|
||||||
|
description: "",
|
||||||
|
id: "set"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "Disconnect email",
|
||||||
|
icon: "/static/assets/icons/disconnect_email.svg",
|
||||||
|
description: "",
|
||||||
|
id: "disconnect"
|
||||||
|
}
|
||||||
|
]).then((exp) => {
|
||||||
|
if (exp && exp.selected) {
|
||||||
|
switch (exp.selected) {
|
||||||
|
case "set":
|
||||||
|
emailChange(optPicker);
|
||||||
|
break
|
||||||
|
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 || ""}`,[])
|
||||||
|
}
|
||||||
|
|
||||||
|
fetchAccountData()
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
export function emailChange(optPicker) {
|
export function emailChange(optPicker) {
|
||||||
optPicker.picker("Change email",[
|
optPicker.picker("Change email",[
|
||||||
{
|
{
|
||||||
|
|
|
@ -131,7 +131,7 @@
|
||||||
<p>Change username</p>
|
<p>Change username</p>
|
||||||
</button>
|
</button>
|
||||||
|
|
||||||
<button on:click={() => accOpts.emailChange(optPicker)}>
|
<button on:click={() => ($account.email ? accOpts.emailPotentialRemove : accOpts.emailChange)(optPicker)}>
|
||||||
<img src="/static/assets/icons/mail.svg" alt="change email">
|
<img src="/static/assets/icons/mail.svg" alt="change email">
|
||||||
<p>Change email{#if $account.email}<span class="monospaceText"><br />{$account.email}</span>{/if}</p>
|
<p>Change email{#if $account.email}<span class="monospaceText"><br />{$account.email}</span>{/if}</p>
|
||||||
</button>
|
</button>
|
||||||
|
|
Loading…
Reference in a new issue