From c2f938f3a2df5c2aaa37113cd9efa573ff715bc0 Mon Sep 17 00:00:00 2001 From: Arthur DANJOU Date: Tue, 12 Dec 2023 16:41:27 +0100 Subject: [PATCH] add admin mode to delete message --- src/auth.d.ts | 5 ++-- src/pages/guestbook.vue | 39 +++++++++++++++++++++++++--- src/server/api/message.delete.ts | 18 +++++++++++++ src/server/routes/auth/github.get.ts | 2 ++ src/server/routes/auth/google.get.ts | 2 ++ 5 files changed, 61 insertions(+), 5 deletions(-) create mode 100644 src/server/api/message.delete.ts diff --git a/src/auth.d.ts b/src/auth.d.ts index d329da5..e7435ac 100644 --- a/src/auth.d.ts +++ b/src/auth.d.ts @@ -1,9 +1,10 @@ declare module '#auth-utils' { interface UserSession { user: { - email: string, - username: string, + email: string + username: string picture: string + admin: boolean } } } diff --git a/src/pages/guestbook.vue b/src/pages/guestbook.vue index 1df664c..a3e7b21 100644 --- a/src/pages/guestbook.vue +++ b/src/pages/guestbook.vue @@ -6,8 +6,7 @@ useHead({ title: 'Sign my guestbook • Arthur Danjou', }) -const { loggedIn, clear } = useUserSession() - +const { loggedIn, clear, user } = useUserSession() const { data: messages, refresh } = useFetch>('/api/messages', { method: 'get' }) const toast = useToast() @@ -37,6 +36,30 @@ async function sign() { }) messageContent.value = '' } +async function deleteMessage(id: number) { + if (!user.value.admin) + return + + await $fetch('/api/message', { + method: 'delete', + body: { + id, + }, + }).then(async () => { + toast.add({ + title: `Message successfully deleted`, + icon: 'i-material-symbols-check-circle-outline-rounded', + color: 'green', + timeout: 4000, + }) + await refresh() + }).catch(() => { + toast.add({ + title: 'An error occured when deleting a message!', + color: 'red', + }) + }) +}