add unenroll to api home page, minor changes

This commit is contained in:
Ean Milligan
2026-04-23 16:51:06 -04:00
parent 1f4c4723d3
commit 8126e6dc95
3 changed files with 23 additions and 5 deletions

View File

@@ -61,6 +61,22 @@ const link=\`${config.api.publicDomain}share#\${planId}\`;
try{await navigator.clipboard.writeText(link);alert('Link copied to clipboard');}
catch (error){prompt('Failed to copy to clipboard, please select and copy the link below:',link);}
}
function deleteAccount(){
const userName=prompt('Please enter your username:')
if(!userName.trim()){return;}
const userPin=prompt('Please enter your PIN:');
if(!userPin.trim()){return;}
if(!confirm('Are you sure you want to delete your account? This is permanent and irreversible, and will delete all plans saved to your account as well.')){return;}
fetch('/api/auth',{method:'POST',body:JSON.stringify({name:userName.trim(),pin:userPin.trim()})})
.catch((e)=>{e.text().then((text)=>{alert(text);});})
.then((r) => {if(r.status===200){r.json().then((j)=>{
let deleteCode='';if(j.hasEmail&&j.deleteCodeSet)deleteCode=prompt('Please enter the Delete Code emailed to you (if you don\'t see it, please check your spam folder):');
if(j.hasEmail&&j.deleteCodeSet&&!deleteCode){alert('Delete code required.');return;}
fetch('/api/unenroll',{method:'DELETE',body:JSON.stringify({name:userName.trim(),pin:userPin.trim(),deleteCode:deleteCode.trim()})})
.catch((e)=>{e.text().then((text)=>{alert(text);});})
.then((r) => {if(r.status===200){alert('Account and plans deleted.');window.location.reload();}else{r.text().then((text)=>{alert(text);});}});
});}else{r.text().then((text)=>{alert(text);});}});
}
</script>
<p>This is a very basic management page. Please excuse the number of alert/prompts that will come up when you click on things as it was the quickest way to build it out.</p>
<p>Please note: anything modifying data will require you to enter your PIN again as both the web view you are looking at and server behind it are completely stateless for simplicity.</p>
@@ -74,5 +90,6 @@ ${plans.map((plan) => makePlanItem(plan, false)).join('')}
<ul>
${deletedPlans.map((plan) => makePlanItem(plan, true)).join('')}
</ul>
<button onclick="deleteAccount()">Delete my account</button>
</div>`;
};

View File

@@ -1,10 +1,10 @@
export default `<div>
<script>
function doLogin(){
fetch('/api/auth',{method:'POST',body:JSON.stringify({ name:document.getElementById('name').value.trim(), pin:document.getElementById('pin').value.trim() })})
fetch('/api/auth',{method:'POST',body:JSON.stringify({name:document.getElementById('name').value.trim(),pin:document.getElementById('pin').value.trim()})})
.catch((e)=>{e.text().then((text)=>{alert(text);});})
.then((r) => {
if(r.status===200){r.json().then((j)=>{localStorage.setItem('name', document.getElementById('name').value.trim());window.location.replace('/api/home/'+j.id);});}
if(r.status===200){r.json().then((j)=>{localStorage.setItem('name',document.getElementById('name').value.trim());window.location.replace('/api/home/'+j.id);});}
else{r.text().then((text)=>{alert(text);});}
});
}