diff --git a/DysonNetwork.Pass/Client/bun.lock b/DysonNetwork.Pass/Client/bun.lock index f4ffe7d..6d0070b 100644 --- a/DysonNetwork.Pass/Client/bun.lock +++ b/DysonNetwork.Pass/Client/bun.lock @@ -4,6 +4,7 @@ "": { "name": "@solar-network/pass", "dependencies": { + "@fingerprintjs/fingerprintjs": "^4.6.2", "@fontsource-variable/nunito": "^5.2.6", "@tailwindcss/vite": "^4.1.11", "aspnet-prerendering": "^3.0.1", @@ -131,6 +132,8 @@ "@eslint/plugin-kit": ["@eslint/plugin-kit@0.3.3", "", { "dependencies": { "@eslint/core": "^0.15.1", "levn": "^0.4.1" } }, "sha512-1+WqvgNMhmlAambTvT3KPtCl/Ibr68VldY2XY40SL1CE0ZXiakFR/cbTspaF5HsnpDMvcYYoJHfl4980NBjGag=="], + "@fingerprintjs/fingerprintjs": ["@fingerprintjs/fingerprintjs@4.6.2", "", { "dependencies": { "tslib": "^2.4.1" } }, "sha512-g8mXuqcFKbgH2CZKwPfVtsUJDHyvcgIABQI7Y0tzWEFXpGxJaXuAuzlifT2oTakjDBLTK4Gaa9/5PERDhqUjtw=="], + "@fontsource-variable/nunito": ["@fontsource-variable/nunito@5.2.6", "", {}, "sha512-dGYTQ0Hl94jjfMraYefrURHGH8fk/vL/1zYAZGofiPJVs6C0OkM8T87Te5Gwrbe6HG/XEMm5lib8AqasTN3ucw=="], "@humanfs/core": ["@humanfs/core@0.19.1", "", {}, "sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA=="], diff --git a/DysonNetwork.Pass/Client/package.json b/DysonNetwork.Pass/Client/package.json index 622bd58..f20db8b 100644 --- a/DysonNetwork.Pass/Client/package.json +++ b/DysonNetwork.Pass/Client/package.json @@ -15,6 +15,7 @@ "format": "prettier --write src/" }, "dependencies": { + "@fingerprintjs/fingerprintjs": "^4.6.2", "@fontsource-variable/nunito": "^5.2.6", "@tailwindcss/vite": "^4.1.11", "aspnet-prerendering": "^3.0.1", diff --git a/DysonNetwork.Pass/Client/src/router/index.ts b/DysonNetwork.Pass/Client/src/router/index.ts index 8b755e6..6f32e4f 100644 --- a/DysonNetwork.Pass/Client/src/router/index.ts +++ b/DysonNetwork.Pass/Client/src/router/index.ts @@ -17,7 +17,12 @@ const router = createRouter({ path: '/spells/:word', name: 'spells', component: () => import('../views/spells.vue'), - } + }, + { + path: '/login', + name: 'login', + component: () => import('../views/login.vue'), + }, ], }) diff --git a/DysonNetwork.Pass/Client/src/views/login.vue b/DysonNetwork.Pass/Client/src/views/login.vue index e69de29..d4b2315 100644 --- a/DysonNetwork.Pass/Client/src/views/login.vue +++ b/DysonNetwork.Pass/Client/src/views/login.vue @@ -0,0 +1,342 @@ + + + + + + + + + + Welcome back! + Login with your Solarpass. + Enter your account identifier to continue. + + + Continue + + + + + + + Completeness + + + + + { + selectedFactorId = factor.id + handleFactorSelected() + } + " + :title="getFactorName(factor.type)" + > + + Select a method to authenticate + + + + + + Enter the {{ selectedFactor.type === 0 ? 'password' : 'verification code' }} to + continue. + + + A code has been sent to {{ selectedFactor.contact }}. + + Enter the code from your authenticator app. + + + + Resend Code + + + + Verify + + + + + + Finalizing Login + + + + + {{ error }} + + + + + + diff --git a/DysonNetwork.Pass/DysonNetwork.Pass.csproj b/DysonNetwork.Pass/DysonNetwork.Pass.csproj index 5099a9e..bc9dacf 100644 --- a/DysonNetwork.Pass/DysonNetwork.Pass.csproj +++ b/DysonNetwork.Pass/DysonNetwork.Pass.csproj @@ -97,6 +97,7 @@ True SharedResource.resx + @@ -132,6 +133,7 @@ ResXFileCodeGenerator SharedResource.Designer.cs + @@ -154,12 +156,19 @@ <_ContentIncludedByDefault Remove="Pages\Shared\_Layout.cshtml" /> <_ContentIncludedByDefault Remove="Pages\Checkpoint\CheckpointPage.cshtml" /> <_ContentIncludedByDefault Remove="Pages\Spell\MagicSpellPage.cshtml" /> + <_ContentIncludedByDefault Remove="Client\.prettierrc.json" /> + <_ContentIncludedByDefault Remove="Client\package.json" /> + <_ContentIncludedByDefault Remove="Client\tsconfig.app.json" /> + <_ContentIncludedByDefault Remove="Client\tsconfig.json" /> + <_ContentIncludedByDefault Remove="Client\tsconfig.node.json" /> - - - + + + + +
Welcome back!
Login with your Solarpass.
Enter your account identifier to continue.
Select a method to authenticate
+ A code has been sent to {{ selectedFactor.contact }}. +
Enter the code from your authenticator app.