diff --git a/frontend/src/lib/components/user/FileRow.svelte b/frontend/src/lib/components/user/FileRow.svelte index 7c437e7..36bbc38 100644 --- a/frontend/src/lib/components/user/FileRow.svelte +++ b/frontend/src/lib/components/user/FileRow.svelte @@ -35,6 +35,8 @@ 'test' ); + export let allowWebhooks: boolean; + const useStyles = createStyles((theme: theme) => { return { root: { @@ -243,7 +245,12 @@ - + diff --git a/frontend/src/routes/user/2fa/+page.svelte b/frontend/src/routes/user/2fa/+page.svelte index e7ae4e0..18603c2 100644 --- a/frontend/src/routes/user/2fa/+page.svelte +++ b/frontend/src/routes/user/2fa/+page.svelte @@ -2,11 +2,12 @@ import { page } from '$app/stores'; import QR from '@svelte-put/qr/img/QR.svelte'; import { Button, Flex, Text, TextInput } from '@svelteuidev/core'; + import { isAxiosError } from 'axios'; import { onMount } from 'svelte'; import { get2FAToken, remove2FAToken } from '../../../server/auth'; let code: string | null = null; - let username: string = ''; + let username: string | null = null; let password: string = ''; let option: string | null = 'enable'; @@ -14,7 +15,7 @@ try { let accessToken = localStorage.getItem('accessToken'); - if (!accessToken) { + if (!accessToken || !username) { window.location.href = '/auth/login'; return; } @@ -27,27 +28,37 @@ return; } } catch (error) { - console.error('Failed to update 2FA token:', error); + if (!isAxiosError(error)) { + alert('An unknown error occurred.'); + return; + } + + if (error.response?.status === 401) { + alert('Invalid password.'); + return; + } + + alert('An error occurred while sharing the file.'); } }; onMount(async () => { option = $page.url.searchParams.get('option'); + username = localStorage.getItem('username'); }); {#if code == null}
-
- +


- Please log in again to update the 2FA token. + Please enter your password again to update the 2FA token. {/if} {#if code != null} diff --git a/frontend/src/routes/user/home/+page.svelte b/frontend/src/routes/user/home/+page.svelte index 77cf867..5497d53 100644 --- a/frontend/src/routes/user/home/+page.svelte +++ b/frontend/src/routes/user/home/+page.svelte @@ -18,6 +18,7 @@ import { onMount } from 'svelte'; import { clearSession } from '../../../auth/session'; import { getFilesForSpecifiedUser, sendFileForSpecifiedUser } from '../../../server/files'; + import { getWebhooksForSpecifiedUser } from '../../../server/webhooks'; let filesToUpload: FileList | null = null; let privateFile = true; @@ -77,7 +78,7 @@ $: ({ classes, getStyles } = useStyles()); let userFiles: FileMetadata[] = []; - + let allowWebhooks = false; let visible = false; onMount(async () => { @@ -90,6 +91,9 @@ try { userFiles = await getFilesForSpecifiedUser(accessToken); + const webhooks = await getWebhooksForSpecifiedUser(accessToken); + + allowWebhooks = webhooks.length > 0; } catch (error) { if (!isAxiosError(error)) { alert('An unknown error occurred.'); @@ -127,7 +131,7 @@ {#each userFiles as file} - + {/each} {#if visible} diff --git a/frontend/src/server/webhooks.ts b/frontend/src/server/webhooks.ts index 7f731c8..b4b278a 100644 --- a/frontend/src/server/webhooks.ts +++ b/frontend/src/server/webhooks.ts @@ -31,7 +31,7 @@ export const uploadWebhook = async (accessToken: string, platform: string, url: export const sendWebhook = async (webhookId: string, fileId: string) => { const result = await axios.post( - `${BASE_URL}/webhooks/send?webhook_id=${webhookId}&file_id=${fileId}/` + `${BASE_URL}/webhooks/send?webhook_id=${webhookId}&file_id=${fileId}` ); return result.data;