Files
fnx_web/svelte/src/user_home/AccountSettings.svelte

117 lines
3.3 KiB
Svelte
Raw Normal View History

2021-09-21 21:39:28 +02:00
<script>
import Form from "./../util/Form.svelte";
2022-11-01 16:56:46 +01:00
let account_settings = {
name: "account_settings",
2021-09-21 21:39:28 +02:00
fields: [
{
2022-11-01 16:56:46 +01:00
name: "email",
label: "E-mail address",
type: "email",
default_value: window.user.email,
description: `We will send an e-mail to the new address to verify
that it's real. The address will be saved once the link in the
message is clicked. If the e-mail doesn't arrive right away
please check your spam box too. Leave the field empty to remove
your current e-mail address from your account`,
separator: true
}, {
name: "password_old",
2022-02-07 12:00:22 +01:00
label: "Current password",
2021-09-21 21:39:28 +02:00
type: "current_password",
2022-11-01 16:56:46 +01:00
discription: `Enter your password here if you would like to change
your password.`
2021-09-21 21:39:28 +02:00
}, {
2022-11-01 16:56:46 +01:00
name: "password_new1",
2021-09-21 21:39:28 +02:00
label: "New password",
type: "new_password",
}, {
2022-11-01 16:56:46 +01:00
name: "password_new2",
2021-09-21 21:39:28 +02:00
label: "New password again",
type: "new_password",
2022-11-01 16:56:46 +01:00
description: `We need you to repeat your password so you won't be
locked out of your account if you make a typing error`,
separator: true,
}, {
name: "username",
2022-08-04 20:19:30 +02:00
label: "Name",
2021-09-21 21:39:28 +02:00
type: "username",
2021-09-21 22:47:38 +02:00
default_value: window.user.username,
2022-11-01 16:56:46 +01:00
description: `Changing your username also changes the name used to
2021-09-21 21:39:28 +02:00
log in. If you forget your username you can still log in using
your e-mail address if you have one configured`,
},
],
submit_label: `<i class="icon">save</i> Save`,
on_submit: async fields => {
2022-11-01 16:56:46 +01:00
if (fields.password_new1 != fields.password_new2) {
return {
success: false,
message: "Passwords do not match! Please enter the same password in both fields"
}
}
2021-09-21 21:39:28 +02:00
const form = new FormData()
2022-11-01 16:56:46 +01:00
form.append("email", fields.email)
form.append("password_old", fields.password_old)
form.append("password_new", fields.password_new1)
form.append("username", fields.username)
2021-09-21 21:39:28 +02:00
const resp = await fetch(
2022-11-01 16:56:46 +01:00
window.api_endpoint+"/user",
2021-09-21 21:39:28 +02:00
{ method: "PUT", body: form }
);
if(resp.status >= 400) {
return {error_json: await resp.json()}
}
2022-11-01 16:56:46 +01:00
return {success: true, message: "Success! Your changes have been saved"}
2021-09-21 21:39:28 +02:00
},
}
2021-10-19 15:59:22 +02:00
let delete_account = {
name: "delete_account",
fields: [
{
name: "description",
label: "Description",
type: "description",
description: `When you delete your pixeldrain account you will be
logged out on all of your devices. Your account will be
scheduled for deletion in seven days. If you log back in to your
account during those seven days the deletion will be canceled.
<br/><br/>
If you have an active Pro subscription you need to end that
separately through your Patreon account. Deleting your
pixeldrain account will not cancel the subscription.`,
},
],
submit_red: true,
submit_label: `<i class="icon">delete</i> Delete`,
on_submit: async fields => {
const resp = await fetch(
window.api_endpoint+"/user",
{ method: "DELETE" }
);
if(resp.status >= 400) {
return {error_json: await resp.json()}
}
setTimeout(() => { window.location = "/" }, 6000)
return {success: true, message: "Success! Your account has been scheduled for deletion in 7 days"}
},
}
2021-09-21 21:39:28 +02:00
</script>
2022-01-11 13:28:22 +01:00
<section>
2022-10-11 14:21:06 +02:00
<br/>
<div class="highlight_border">
2022-11-01 16:56:46 +01:00
<h3>Account settings</h3>
<Form config={account_settings}></Form>
2022-08-04 20:19:30 +02:00
</div>
<br/>
2022-10-11 14:21:06 +02:00
<div class="highlight_border">
2022-08-04 20:19:30 +02:00
<h3>Delete account</h3>
<Form config={delete_account}></Form>
</div>
<br/>
2022-01-11 13:28:22 +01:00
</section>