-
-
Two-factor authentication
-
Authenticator-app setup. Users already enrolled can still complete sign-in.
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
- Passkeys
- WebAuthn passkey registration and sign-in.
-
-
-
-
-
-
-
+
diff --git a/src/AndreGoepel.AppFoundation/Components/Pages/Error.razor b/src/AndreGoepel.AppFoundation/Components/Pages/Error.razor
index f47017d..a8be52d 100644
--- a/src/AndreGoepel.AppFoundation/Components/Pages/Error.razor
+++ b/src/AndreGoepel.AppFoundation/Components/Pages/Error.razor
@@ -1,7 +1,7 @@
@page "/Error"
@using System.Diagnostics
-
+
diff --git a/src/AndreGoepel.AppFoundation/Components/Pages/Home.razor b/src/AndreGoepel.AppFoundation/Components/Pages/Home.razor
index 1d3e3fd..433a448 100644
--- a/src/AndreGoepel.AppFoundation/Components/Pages/Home.razor
+++ b/src/AndreGoepel.AppFoundation/Components/Pages/Home.razor
@@ -1,7 +1,7 @@
@page "/dashboard"
@attribute [Authorize]
-
+
diff --git a/src/AndreGoepel.AppFoundation/Components/Pages/Setup.razor b/src/AndreGoepel.AppFoundation/Components/Pages/Setup.razor
index 5799dcf..255d974 100644
--- a/src/AndreGoepel.AppFoundation/Components/Pages/Setup.razor
+++ b/src/AndreGoepel.AppFoundation/Components/Pages/Setup.razor
@@ -23,7 +23,7 @@
@inject NotificationService NotificationService
@inject LoginTokenProtector LoginTokens
-
+
Set up your administrator account.
diff --git a/src/AndreGoepel.AppFoundation/Components/Shared/AppFoundationPageTitle.razor b/src/AndreGoepel.AppFoundation/Components/Shared/AppFoundationPageTitle.razor
deleted file mode 100644
index efcc737..0000000
--- a/src/AndreGoepel.AppFoundation/Components/Shared/AppFoundationPageTitle.razor
+++ /dev/null
@@ -1,16 +0,0 @@
-@inject Microsoft.Extensions.Options.IOptions LayoutOptions
-
-@* App-branded page title: sets the document (with the configured brand name
- as suffix) and, for shell pages, the topbar breadcrumb — delegating to the design
- system's AppPageTitle. Mirrors the identity package's IdentityPageTitle. *@
-
-
-@code {
- /// The page-specific title, e.g. "Dashboard".
- [Parameter, EditorRequired]
- public string Title { get; set; } = default!;
-
- /// Optional topbar breadcrumb (shell pages). Falls back to .
- [Parameter]
- public string? Breadcrumb { get; set; }
-}
diff --git a/src/AndreGoepel.AppFoundation/Components/Shared/ErrorPage.razor b/src/AndreGoepel.AppFoundation/Components/Shared/ErrorPage.razor
index b5f7128..4ad9a57 100644
--- a/src/AndreGoepel.AppFoundation/Components/Shared/ErrorPage.razor
+++ b/src/AndreGoepel.AppFoundation/Components/Shared/ErrorPage.razor
@@ -1,26 +1,15 @@
@inject NavigationManager NavigationManager
-
+
-
-
-
- @_copy.Title
-
-
- @_copy.Message
-
-
+
+
NavigationManager.NavigateTo("/")) />
-
-
-
+
+
@code {
diff --git a/src/AndreGoepel.AppFoundation/packages.lock.json b/src/AndreGoepel.AppFoundation/packages.lock.json
index ac3712d..dbd5822 100644
--- a/src/AndreGoepel.AppFoundation/packages.lock.json
+++ b/src/AndreGoepel.AppFoundation/packages.lock.json
@@ -4,21 +4,21 @@
"net10.0": {
"AndreGoepel.Design.Blazor": {
"type": "Direct",
- "requested": "[1.0.3, )",
- "resolved": "1.0.3",
- "contentHash": "WgKKyHT/i2GDIUNtj5GWR/POEMDxebtF2SeX8AVToEZ2yLrw1p2m1fqWc+L81myOo1AN6yZjTz411soEge9QSg==",
+ "requested": "[1.1.0, )",
+ "resolved": "1.1.0",
+ "contentHash": "hv/9YPUyf5pjxx2ASmN9Gdnc0l1EoBs0rmEFnHdnbqajGBLtGcoJlz0MjMvS8JCyllU52uv3heHcbdHeaipYDQ==",
"dependencies": {
- "Radzen.Blazor": "11.1.3"
+ "Radzen.Blazor": "11.1.5"
}
},
"AndreGoepel.Marten.Identity.Blazor": {
"type": "Direct",
- "requested": "[1.3.4, )",
- "resolved": "1.3.4",
- "contentHash": "iau3CcGI9vACGTH0u1hsbTqofpmMN7Sx95bXgLAFCQnb8bs0GQ/oRpLexKZKlT0UCe2JZE/INaDBexgvayEoyA==",
+ "requested": "[1.4.0, )",
+ "resolved": "1.4.0",
+ "contentHash": "TfC+AzVFleA41flArHJONe7uDBbQXAw7V+9lBd4ybY7AAsX9jj2Rq55Ir65z8ch+5e2WmFhGHu+ccndLG3bYcw==",
"dependencies": {
- "AndreGoepel.Design.Blazor": "1.0.3",
- "AndreGoepel.Marten.Identity": "1.3.4",
+ "AndreGoepel.Design.Blazor": "1.1.0",
+ "AndreGoepel.Marten.Identity": "1.4.0",
"Marten": "9.16.0",
"Marten.AspNetCore": "9.16.0",
"Quartz.Extensions.Hosting": "3.18.2",
@@ -56,10 +56,10 @@
},
"AndreGoepel.Marten.Identity": {
"type": "Transitive",
- "resolved": "1.3.4",
- "contentHash": "HkKzA7KWXj7z9LGlKxv3a1urVWF9IdCWuyyAIxFp8ujmdOGRC5XyFcRqcDePWd6wQj7zTtslGQdTGI7lBg9Cgw==",
+ "resolved": "1.4.0",
+ "contentHash": "jb4yYq18xxBHqkEj23BSfn1CpZa+qJJLzUE8Defg4VVIBMY37kF15JaYDowDZr1taCrsS1Np+ZWuazt6ooVEuQ==",
"dependencies": {
- "AndreGoepel.Marten.Identity.Abstractions": "1.3.4",
+ "AndreGoepel.Marten.Identity.Abstractions": "1.4.0",
"Marten": "9.16.0",
"Marten.AspNetCore": "9.16.0",
"Quartz.Extensions.Hosting": "3.18.2"
@@ -67,8 +67,8 @@
},
"AndreGoepel.Marten.Identity.Abstractions": {
"type": "Transitive",
- "resolved": "1.3.4",
- "contentHash": "IW1/Aa8eXxqPmXyYy4LXrJIP7bNRrCYbaz1fk+qkbQh+m13Vd5wDybDUmbdQ7ipqaZWWhLSQCZZZcD+43nulpQ=="
+ "resolved": "1.4.0",
+ "contentHash": "MXFFYS2/wpxJ+G3UBAaoJV9GAdGJyRGIU7NUdTx/H7lVRYfJj7CpDAKN4wnkktkjWDhKIU1QeNgLfANiZlCMqg=="
},
"BouncyCastle.Cryptography": {
"type": "Transitive",
diff --git a/tests/AndreGoepel.AppFoundation.Tests/packages.lock.json b/tests/AndreGoepel.AppFoundation.Tests/packages.lock.json
index 2c99dc1..92017ed 100644
--- a/tests/AndreGoepel.AppFoundation.Tests/packages.lock.json
+++ b/tests/AndreGoepel.AppFoundation.Tests/packages.lock.json
@@ -4,12 +4,12 @@
"net10.0": {
"AndreGoepel.Marten.Identity.Blazor": {
"type": "Direct",
- "requested": "[1.3.4, )",
- "resolved": "1.3.4",
- "contentHash": "iau3CcGI9vACGTH0u1hsbTqofpmMN7Sx95bXgLAFCQnb8bs0GQ/oRpLexKZKlT0UCe2JZE/INaDBexgvayEoyA==",
+ "requested": "[1.4.0, )",
+ "resolved": "1.4.0",
+ "contentHash": "TfC+AzVFleA41flArHJONe7uDBbQXAw7V+9lBd4ybY7AAsX9jj2Rq55Ir65z8ch+5e2WmFhGHu+ccndLG3bYcw==",
"dependencies": {
- "AndreGoepel.Design.Blazor": "1.0.3",
- "AndreGoepel.Marten.Identity": "1.3.4",
+ "AndreGoepel.Design.Blazor": "1.1.0",
+ "AndreGoepel.Marten.Identity": "1.4.0",
"Marten": "9.16.0",
"Marten.AspNetCore": "9.16.0",
"Quartz.Extensions.Hosting": "3.18.2",
@@ -71,10 +71,10 @@
},
"AndreGoepel.Marten.Identity": {
"type": "Transitive",
- "resolved": "1.3.4",
- "contentHash": "HkKzA7KWXj7z9LGlKxv3a1urVWF9IdCWuyyAIxFp8ujmdOGRC5XyFcRqcDePWd6wQj7zTtslGQdTGI7lBg9Cgw==",
+ "resolved": "1.4.0",
+ "contentHash": "jb4yYq18xxBHqkEj23BSfn1CpZa+qJJLzUE8Defg4VVIBMY37kF15JaYDowDZr1taCrsS1Np+ZWuazt6ooVEuQ==",
"dependencies": {
- "AndreGoepel.Marten.Identity.Abstractions": "1.3.4",
+ "AndreGoepel.Marten.Identity.Abstractions": "1.4.0",
"Marten": "9.16.0",
"Marten.AspNetCore": "9.16.0",
"Quartz.Extensions.Hosting": "3.18.2"
@@ -82,8 +82,8 @@
},
"AndreGoepel.Marten.Identity.Abstractions": {
"type": "Transitive",
- "resolved": "1.3.4",
- "contentHash": "IW1/Aa8eXxqPmXyYy4LXrJIP7bNRrCYbaz1fk+qkbQh+m13Vd5wDybDUmbdQ7ipqaZWWhLSQCZZZcD+43nulpQ=="
+ "resolved": "1.4.0",
+ "contentHash": "MXFFYS2/wpxJ+G3UBAaoJV9GAdGJyRGIU7NUdTx/H7lVRYfJj7CpDAKN4wnkktkjWDhKIU1QeNgLfANiZlCMqg=="
},
"AngleSharp.Css": {
"type": "Transitive",
@@ -732,8 +732,8 @@
"type": "Project",
"dependencies": {
"AndreGoepel.AppFoundation.MailService": "[1.1.0, )",
- "AndreGoepel.Design.Blazor": "[1.0.3, )",
- "AndreGoepel.Marten.Identity.Blazor": "[1.3.4, )",
+ "AndreGoepel.Design.Blazor": "[1.1.0, )",
+ "AndreGoepel.Marten.Identity.Blazor": "[1.4.0, )",
"Marten": "[9.16.0, )",
"Radzen.Blazor": "[11.1.5, )",
"WolverineFx.Marten": "[6.20.0, )"
@@ -745,7 +745,7 @@
"AndreGoepel.AppFoundation": "[1.1.0, )",
"AndreGoepel.AppFoundation.MailService": "[1.1.0, )",
"AndreGoepel.AppFoundation.ServiceDefaults": "[1.1.0, )",
- "AndreGoepel.Marten.Identity.Blazor": "[1.3.4, )",
+ "AndreGoepel.Marten.Identity.Blazor": "[1.4.0, )",
"Marten": "[9.16.0, )",
"Microsoft.AspNetCore.HeaderPropagation": "[10.0.10, )",
"Radzen.Blazor": "[11.1.5, )",
@@ -775,11 +775,11 @@
},
"AndreGoepel.Design.Blazor": {
"type": "CentralTransitive",
- "requested": "[1.0.3, )",
- "resolved": "1.0.3",
- "contentHash": "WgKKyHT/i2GDIUNtj5GWR/POEMDxebtF2SeX8AVToEZ2yLrw1p2m1fqWc+L81myOo1AN6yZjTz411soEge9QSg==",
+ "requested": "[1.1.0, )",
+ "resolved": "1.1.0",
+ "contentHash": "hv/9YPUyf5pjxx2ASmN9Gdnc0l1EoBs0rmEFnHdnbqajGBLtGcoJlz0MjMvS8JCyllU52uv3heHcbdHeaipYDQ==",
"dependencies": {
- "Radzen.Blazor": "11.1.3"
+ "Radzen.Blazor": "11.1.5"
}
},
"AngleSharp": {