diff --git a/.gitignore b/.gitignore
index a3bbd943..f6132c14 100644
--- a/.gitignore
+++ b/.gitignore
@@ -32,4 +32,5 @@ coverage
/playwright-report/
/playwright/.cache/
# Webkit with playwright creates a salt file
-salt
\ No newline at end of file
+salt
+package-lock.json
diff --git a/components.d.ts b/components.d.ts
index 3e65c3cc..57c3a65a 100644
--- a/components.d.ts
+++ b/components.d.ts
@@ -118,6 +118,7 @@ declare module '@vue/runtime-core' {
KeycodeInfo: typeof import('./src/tools/keycode-info/keycode-info.vue')['default']
ListConverter: typeof import('./src/tools/list-converter/list-converter.vue')['default']
LocaleSelector: typeof import('./src/modules/i18n/components/locale-selector.vue')['default']
+ Login: typeof import('./src/pages/Login.vue')['default']
LoremIpsumGenerator: typeof import('./src/tools/lorem-ipsum-generator/lorem-ipsum-generator.vue')['default']
MacAddressGenerator: typeof import('./src/tools/mac-address-generator/mac-address-generator.vue')['default']
MacAddressLookup: typeof import('./src/tools/mac-address-lookup/mac-address-lookup.vue')['default']
diff --git a/src/config.ts b/src/config.ts
index fa2421ef..461a89ea 100644
--- a/src/config.ts
+++ b/src/config.ts
@@ -27,6 +27,12 @@ export const config = figue({
default: 'development',
env: 'VITE_VERCEL_ENV',
},
+ token: {
+ doc: 'Application token',
+ format: 'string',
+ default: '',
+ env: 'VITE_TOKEN',
+ },
},
plausible: {
isTrackerEnabled: {
diff --git a/src/pages/Login.vue b/src/pages/Login.vue
new file mode 100644
index 00000000..2c271ee6
--- /dev/null
+++ b/src/pages/Login.vue
@@ -0,0 +1,120 @@
+
+
+
+
+
+
+
diff --git a/src/router.ts b/src/router.ts
index da0c4f1e..8d71ca1d 100644
--- a/src/router.ts
+++ b/src/router.ts
@@ -26,6 +26,11 @@ const router = createRouter({
name: 'home',
component: HomePage,
},
+ {
+ path: '/login',
+ name: 'login',
+ component: () => import('./pages/Login.vue'),
+ },
{
path: '/about',
name: 'about',
@@ -38,4 +43,15 @@ const router = createRouter({
],
});
+if (config.app.token){
+ router.beforeEach((to, from, next) => {
+ const isLoggedIn = localStorage.getItem('isLoggedIn') === 'true';
+ if (to.path !== '/login' && !isLoggedIn) {
+ next('/login');
+ } else {
+ next();
+ }
+ });
+}
+
export default router;