diff --git a/frontend/middleware/authenticated.ts b/frontend/middleware/authenticated.ts new file mode 100644 index 0000000..c556208 --- /dev/null +++ b/frontend/middleware/authenticated.ts @@ -0,0 +1,13 @@ +export default defineNuxtRouteMiddleware((to, _from) => { + if ( + useAuthSession().value != null || + to.name === 'signin' || + to.name === 'signup' + ) { + return; + } + + return navigateTo({ + path: '/signin', + }); +}); diff --git a/frontend/middleware/not-authenticated.ts b/frontend/middleware/not-authenticated.ts new file mode 100644 index 0000000..928ab3c --- /dev/null +++ b/frontend/middleware/not-authenticated.ts @@ -0,0 +1,9 @@ +export default defineNuxtRouteMiddleware((to, _from) => { + if (useAuthSession().value == null && to.name !== 'index') { + return; + } + + return navigateTo({ + path: '/', + }); +}); diff --git a/frontend/pages/about.vue b/frontend/pages/about.vue deleted file mode 100644 index 5b3a9b8..0000000 --- a/frontend/pages/about.vue +++ /dev/null @@ -1,5 +0,0 @@ - diff --git a/frontend/pages/index.vue b/frontend/pages/index.vue index ab93d02..8d7d985 100644 --- a/frontend/pages/index.vue +++ b/frontend/pages/index.vue @@ -1,3 +1,9 @@ + + diff --git a/frontend/pages/login.vue b/frontend/pages/signin.vue similarity index 96% rename from frontend/pages/login.vue rename to frontend/pages/signin.vue index 3e1cfa3..ba079b0 100644 --- a/frontend/pages/login.vue +++ b/frontend/pages/signin.vue @@ -11,6 +11,7 @@ import { loginUser } from '~/lib/api/auth/login'; definePageMeta({ layout: 'auth', + middleware: ['not-authenticated'], }); // TODO: Get this from the backend @@ -86,7 +87,7 @@ function onKeyDown(e: KeyboardEvent) { - + diff --git a/frontend/pages/register.vue b/frontend/pages/signup.vue similarity index 94% rename from frontend/pages/register.vue rename to frontend/pages/signup.vue index 88cf2e6..2a7104b 100644 --- a/frontend/pages/register.vue +++ b/frontend/pages/signup.vue @@ -11,6 +11,7 @@ import { registerUser } from '~/lib/api/auth/register'; definePageMeta({ layout: 'auth', + middleware: ['not-authenticated'], }); const registering = ref(false); @@ -35,7 +36,7 @@ async function submit() { ); if (success) { - await navigateTo({ path: '/login' }); + await navigateTo({ path: '/signin' }); return; } @@ -90,7 +91,7 @@ async function submit() { @click="submit" >Sign up - + diff --git a/frontend/pages/warrens/[...path].vue b/frontend/pages/warrens/[...path].vue index 6b77bc2..107cf4f 100644 --- a/frontend/pages/warrens/[...path].vue +++ b/frontend/pages/warrens/[...path].vue @@ -3,6 +3,10 @@ import DirectoryListContextMenu from '~/components/DirectoryListContextMenu.vue' import RenameEntryDialog from '~/components/actions/RenameEntryDialog.vue'; import { getWarrenDirectory } from '~/lib/api/warrens'; +definePageMeta({ + middleware: ['authenticated'], +}); + const entries = useAsyncData('current-directory', () => getWarrenDirectory(useWarrenRoute().value) ).data; diff --git a/frontend/pages/warrens/index.vue b/frontend/pages/warrens/index.vue index 8d095c8..23b84d8 100644 --- a/frontend/pages/warrens/index.vue +++ b/frontend/pages/warrens/index.vue @@ -1,6 +1,10 @@