Skip to content

Commit 71c5298

Browse files
committed
Passkey deletion implementation & use:enhance fix
1 parent 7063872 commit 71c5298

2 files changed

Lines changed: 44 additions & 41 deletions

File tree

src/routes/settings/+page.server.ts

Lines changed: 22 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -100,20 +100,26 @@ export const actions: Actions = {
100100
},
101101

102102
//hm: cant delete off of device for security reasons
103-
// deletePasskey: async ({ locals, cookies, request, params }) => {
104-
// const requestData = await request.formData();
105-
// const createPasskey = requestData.get('newPasskey')?.toString() ?? "";
106-
107-
// let data: any = 9
108-
// const passkeyDeleted = await prisma.passkey.delete({
109-
// where: {
110-
// id: "bc7787a7-702d-42e4-8fad-27424fad2b8a"
111-
// }
112-
113-
// })
114-
// return {
115-
// success: true,
116-
// passkey: passkeyDeleted
117-
// };
118-
// }
103+
deletePasskey: async ({ locals, cookies, request, params }) => {
104+
const requestData = await request.formData();
105+
const passkeyID = requestData.get('delpasskeyID')?.toString() ?? "";
106+
107+
console.log("LOOKIT: " + passkeyID)
108+
109+
if (passkeyID) {
110+
const passkeyDeleted = await prisma.passkey.delete({
111+
where: {
112+
id: passkeyID
113+
}
114+
115+
})
116+
return {
117+
success: true,
118+
passkey: passkeyDeleted
119+
};
120+
121+
}
122+
123+
return fail(500, {message: passkeyID});
124+
}
119125
};

src/routes/settings/+page.svelte

Lines changed: 22 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
import { tick } from 'svelte';
1515
import { notifications, Notification } from '$lib/stores/notificationStore';
1616
import * as m from '$lib/i18n/messages';
17-
17+
1818
export let data: PageData;
1919
2020
const noErrors: { [key: string]: string | null } = {
@@ -49,7 +49,8 @@
4949
identifierVisibility:
5050
data.session?.user?.identifiers.find((a) => true)?.visibility ?? 'COMMUNITY',
5151
defaultVisibility: data.session?.user?.defaultVisibility ?? 'COMMUNITY',
52-
newPasskey: ''
52+
newPasskey: '',
53+
delpasskeyID: ''
5354
};
5455
5556
let modalTitle = '';
@@ -126,7 +127,7 @@
126127
127128
if (form) {
128129
await tick();
129-
form.submit();
130+
form.requestSubmit();
130131
}
131132
132133
if(userVerified) {
@@ -144,31 +145,24 @@
144145
};
145146
let errorMessage = '';
146147
147-
const addPasskey = () => {
148-
finished = true;
149-
150-
return ({ result }: { result: ActionResult }) => {
151-
if (result.type === 'error') errorMessage = result.error?.message;
152-
else if (result.type === 'success' && result.data?.passkey) {
153-
const data = result.data;
154-
console.log(data);
155-
} else {
156-
alert("There's an issue: " + errorMessage);
157-
}
158-
};
159-
};
160-
161148
let delKey = false;
162149
let verifyDelete = false;
163150
164-
const deletePasskey = () => {
151+
const deletePasskey = (passkey_id: string) => {
165152
delKey = true;
166-
153+
formData.delpasskeyID = passkey_id;
167154
};
168155
169-
const deletePasskeyHelper = () => {
156+
const deletePasskeyHelper = async () => {
157+
158+
const form = document.getElementById('delPassKeyForm') as HTMLFormElement;
170159
160+
if (form) {
161+
await tick();
162+
form.requestSubmit();
163+
}
171164
165+
formData.delpasskeyID = "";
172166
alert('Passkey deleted');
173167
verifyDelete = false;
174168
delKey = false;
@@ -290,7 +284,7 @@
290284
{passkeyJSON(passkey.json, 'timestamp')}
291285
</td>
292286
<td class="py-4">
293-
<Button buttonType="button" on:click={() => deletePasskey()} submodule="secondary"
287+
<Button buttonType="button" on:click={() => deletePasskey(passkey.id)} submodule="secondary"
294288
>Delete</Button
295289
>
296290
</td>
@@ -342,10 +336,13 @@
342336
actions={[]}
343337
>
344338

339+
<form id="delPassKeyForm" action="?/deletePasskey" method="POST" use:enhance>
340+
<Button buttonType="button" on:click={() => deletePasskeyHelper()} submodule="primary">
341+
Yes, I'm sure
342+
</Button>
343+
<input id="settings_passkeydelete" name="delpasskeyID" bind:value={formData.delpasskeyID}/>
344+
</form>
345345

346-
<Button buttonType="button" on:click={() => deletePasskeyHelper()} submodule="primary"
347-
>Yes, I'm sure</Button
348-
>
349346
<Button buttonType="button" on:click={() => (delKey = false)} submodule="primary">No, take me back</Button>
350347
</Modal>
351348

@@ -358,7 +355,7 @@
358355
}}
359356
actions={[]}
360357
>
361-
<form id="newPassKeyForm" action="?/savePasskey" method="POST" use:enhance>
358+
<form id="newPassKeyForm" action="?/savePasskey" method="POST" use:enhance>
362359
<button type="submit" class="hidden" id="hiddenSubmit">Submit</button>
363360
<input id="settings_passkeycreate" name="newPasskey" value={formData.newPasskey} />
364361

0 commit comments

Comments
 (0)