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 @@