diff --git a/docs/IMPLEMENTATION_PLAN.md b/docs/IMPLEMENTATION_PLAN.md
index f338c16..257e392 100644
--- a/docs/IMPLEMENTATION_PLAN.md
+++ b/docs/IMPLEMENTATION_PLAN.md
@@ -1719,7 +1719,7 @@ public enum CashBookEntryType { Income = 0, Expense = 1 }
| ✓ | K18 | Web | Export Controller | 1 |
| ✓ | K19 | Web | Membership Fees Feature | 2 |
| ✓ | K20 | Web | Club Settings Extension | 3 |
-| ☐ | K21 | Web | Navigation Integration | 1 |
+| ✓ | K21 | Web | Navigation Integration | 1 |
| ☐ | K22 | Tests | Unit Tests | 2 |
| ☐ | K23 | Tests | Integration Tests | 1 |
diff --git a/src/Koogle.Web/Components/Layout/NavMenu.razor b/src/Koogle.Web/Components/Layout/NavMenu.razor
index ac6dd54..24a1814 100644
--- a/src/Koogle.Web/Components/Layout/NavMenu.razor
+++ b/src/Koogle.Web/Components/Layout/NavMenu.razor
@@ -22,7 +22,30 @@
Spieltage
+ @if (AuthState.Value.IsClubTreasurer || AuthState.Value.IsClubAdmin || AuthState.Value.IsSuperAdmin)
+ {
+
+
+ Übersicht
+
+
+ Kategorien
+
+
+
+ Berichte
+
+
+ }
@if (AuthState.Value.IsClubAdmin || AuthState.Value.IsSuperAdmin)
{
diff --git a/src/Koogle.Web/Store/AuthState/AuthState.cs b/src/Koogle.Web/Store/AuthState/AuthState.cs
index d393088..0e393e1 100644
--- a/src/Koogle.Web/Store/AuthState/AuthState.cs
+++ b/src/Koogle.Web/Store/AuthState/AuthState.cs
@@ -62,6 +62,11 @@ public record AuthState
///
public bool IsClubAdmin { get; set; }
+ ///
+ /// Whether the user is a Club Treasurer (Kassenwart).
+ ///
+ public bool IsClubTreasurer { get; set; }
+
///
/// Whether the user is a Club Editor.
///
@@ -92,6 +97,7 @@ public record AuthState
AvailableClubs = [],
IsSuperAdmin = false,
IsClubAdmin = false,
+ IsClubTreasurer = false,
IsClubEditor = false,
IsClubViewer = false,
Roles = [],
@@ -107,12 +113,14 @@ public record AuthState
{
var isSuperAdmin = roles.Contains(UserRole.SuperAdmin);
var isClubAdmin = roles.Contains(UserRole.Admin);
+ var isClubTreasurer = roles.Contains(UserRole.Treasurer);
var isClubEditor = roles.Contains(UserRole.Editor);
var isClubViewer = roles.Contains(UserRole.Viewer);
var highestRole = string.Empty;
if (isSuperAdmin) highestRole = UserRole.SuperAdmin;
else if (isClubAdmin) highestRole = UserRole.Admin;
+ else if (isClubTreasurer) highestRole = UserRole.Treasurer;
else if (isClubEditor) highestRole = UserRole.Editor;
else highestRole = UserRole.Viewer;
@@ -121,6 +129,7 @@ public record AuthState
Roles = roles,
IsSuperAdmin = isSuperAdmin,
IsClubAdmin = isClubAdmin,
+ IsClubTreasurer = isClubTreasurer,
IsClubEditor = isClubEditor,
IsClubViewer = isClubViewer,
HighestRole = highestRole