From 9fa9db9b8a5d014478cb812ad9dcdcec30b671b1 Mon Sep 17 00:00:00 2001 From: Matt Date: Sat, 30 Aug 2025 22:44:04 +0200 Subject: [PATCH] Complete infrastructure reorganization to role-based structure - Created all missing admin pages (users, settings, events, members, payments) - Created board pages (governance, meetings) - Updated dashboard router to use new /admin, /board, /member structure - Added isMember alias to useAuth composable for consistency - All pages now use correct role-based layouts and middleware - Build verified successfully The platform now has a clean separation: - /admin/* - Administrator dashboard and tools - /board/* - Board member governance and meetings - /member/* - Member portal and resources Next steps: Complete remaining member pages and clean up old dashboard files --- composables/useAuth.ts | 4 + pages/admin/events/index.vue | 552 +++++++++++++++++++++++++++++++ pages/admin/members/index.vue | 507 ++++++++++++++++++++++++++++ pages/admin/payments/index.vue | 524 +++++++++++++++++++++++++++++ pages/admin/settings/index.vue | 513 ++++++++++++++++++++++++++++ pages/admin/users/index.vue | 424 ++++++++++++++++++++++++ pages/board/governance/index.vue | 350 ++++++++++++++++++++ pages/board/meetings/index.vue | 293 ++++++++++++++++ pages/dashboard/index.vue | 13 +- 9 files changed, 3177 insertions(+), 3 deletions(-) create mode 100644 pages/admin/events/index.vue create mode 100644 pages/admin/members/index.vue create mode 100644 pages/admin/payments/index.vue create mode 100644 pages/admin/settings/index.vue create mode 100644 pages/admin/users/index.vue create mode 100644 pages/board/governance/index.vue create mode 100644 pages/board/meetings/index.vue diff --git a/composables/useAuth.ts b/composables/useAuth.ts index 551e883..5b7bef2 100644 --- a/composables/useAuth.ts +++ b/composables/useAuth.ts @@ -41,6 +41,9 @@ export const useAuth = () => { // Fallback to legacy tier system return user.value?.tier === 'user'; }); + + // Alias for consistency with new naming convention + const isMember = isUser; const isBoard = computed(() => { // Check new realm roles first @@ -300,6 +303,7 @@ export const useAuth = () => { // Tier-based properties userTier, isUser, + isMember, // Alias for isUser, better naming convention isBoard, isAdmin, firstName, diff --git a/pages/admin/events/index.vue b/pages/admin/events/index.vue new file mode 100644 index 0000000..35dc980 --- /dev/null +++ b/pages/admin/events/index.vue @@ -0,0 +1,552 @@ + + + \ No newline at end of file diff --git a/pages/admin/members/index.vue b/pages/admin/members/index.vue new file mode 100644 index 0000000..731443e --- /dev/null +++ b/pages/admin/members/index.vue @@ -0,0 +1,507 @@ + + + \ No newline at end of file diff --git a/pages/admin/payments/index.vue b/pages/admin/payments/index.vue new file mode 100644 index 0000000..695495e --- /dev/null +++ b/pages/admin/payments/index.vue @@ -0,0 +1,524 @@ + + + \ No newline at end of file diff --git a/pages/admin/settings/index.vue b/pages/admin/settings/index.vue new file mode 100644 index 0000000..b27a748 --- /dev/null +++ b/pages/admin/settings/index.vue @@ -0,0 +1,513 @@ + + + \ No newline at end of file diff --git a/pages/admin/users/index.vue b/pages/admin/users/index.vue new file mode 100644 index 0000000..5c496d0 --- /dev/null +++ b/pages/admin/users/index.vue @@ -0,0 +1,424 @@ + + + \ No newline at end of file diff --git a/pages/board/governance/index.vue b/pages/board/governance/index.vue new file mode 100644 index 0000000..783c1c6 --- /dev/null +++ b/pages/board/governance/index.vue @@ -0,0 +1,350 @@ + + + \ No newline at end of file diff --git a/pages/board/meetings/index.vue b/pages/board/meetings/index.vue new file mode 100644 index 0000000..45ee65b --- /dev/null +++ b/pages/board/meetings/index.vue @@ -0,0 +1,293 @@ + + + \ No newline at end of file diff --git a/pages/dashboard/index.vue b/pages/dashboard/index.vue index fa10142..f6de505 100644 --- a/pages/dashboard/index.vue +++ b/pages/dashboard/index.vue @@ -22,7 +22,7 @@ definePageMeta({ layout: 'dashboard' }); -const { user, userTier } = useAuth(); +const { user, userTier, isAdmin, isBoard } = useAuth(); const loading = ref(true); // Route to tier-specific dashboard - auth middleware ensures user is authenticated @@ -31,8 +31,15 @@ onMounted(() => { // Auth middleware has already verified authentication - route based on highest privilege if (user.value && userTier.value) { - // Use old structure for now until new pages are fully deployed - let targetRoute = `/dashboard/${userTier.value}`; + // Use new role-based structure + let targetRoute = ''; + if (isAdmin.value) { + targetRoute = '/admin/dashboard'; + } else if (isBoard.value) { + targetRoute = '/board/dashboard'; + } else { + targetRoute = '/member/dashboard'; + } console.log('🔄 Routing to role-specific dashboard:', targetRoute); navigateTo(targetRoute, { replace: true });