Commit Graph

22 Commits

Author SHA1 Message Date
Matt 9fa9db9b8a Complete infrastructure reorganization to role-based structure
Build And Push Image / docker (push) Successful in 1m50s Details
- 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
2025-08-30 22:44:04 +02:00
Matt 44aee8f2f9 Refactor event form to use separate date/time inputs with validation
Build And Push Image / docker (push) Successful in 1m26s Details
- Split combined datetime pickers into separate date and time fields
- Add validation for past dates and time consistency
- Implement error message display with dismissible alerts
- Add watchers to combine date/time values into ISO strings
- Set minimum date constraints to prevent past date selection
- Add delete endpoint for events
2025-08-13 22:23:06 +02:00
Matt 62fb84d25e Add guest support for events and RSVP system
Build And Push Image / docker (push) Successful in 3m52s Details
- Add guest settings to event creation with configurable max guests per person
- Implement guest selection in RSVP form when guests are permitted
- Update API endpoints to handle guest count in RSVP requests
- Extend event and RSVP types to support guest-related fields
2025-08-13 15:14:43 +02:00
Matt 234c939dcd fixes
Build And Push Image / docker (push) Successful in 3m47s Details
2025-08-13 14:30:26 +02:00
Matt 3620bd8b53 Fix RSVP API calls and compact MemberCard UI design
Build And Push Image / docker (push) Successful in 4m2s Details
2025-08-13 14:02:29 +02:00
Matt a0153a76a4 fixes
Build And Push Image / docker (push) Successful in 3m59s Details
2025-08-13 13:18:07 +02:00
Matt 072acf95eb Fix type safety and data consistency in events system
Build And Push Image / docker (push) Successful in 3m25s Details
- Add proper TypeScript type annotations and assertions
- Handle string/number conversion for attendee counts consistently
- Improve null/undefined checks for events array
- Make event handlers async for better error handling
- Fix data type inconsistencies between components and API
2025-08-12 17:23:42 +02:00
Matt f096897129 Add event management system with calendar and CRUD operations
Build And Push Image / docker (push) Failing after 2m37s Details
- Add EventCalendar component with FullCalendar integration
- Create event CRUD dialogs and upcoming event banner
- Implement server-side events API and database utilities
- Add events dashboard page and navigation
- Improve dues calculation with better overdue day logic
- Install FullCalendar and date-fns dependencies
2025-08-12 04:25:35 +02:00
Matt 2eaf9cda95 Refactor mobile detection to use built-in Nuxt device module
Build And Push Image / docker (push) Failing after 2m27s Details
Replace custom useMobileDetection composable with Nuxt's useDevice(),
removing reactive mobile detection in favor of static detection to
prevent reload loops and simplify viewport handling
2025-08-10 14:38:02 +02:00
Matt 006d4cf1ff Improve mobile keyboard handling and viewport detection
Build And Push Image / docker (push) Successful in 3m3s Details
- Disable transitions and make menu persistent on mobile devices
- Add keyboard open/close detection to prevent unwanted viewport updates
- Differentiate between keyboard events and actual viewport changes
- Improve resize debouncing with longer delays for mobile
- Handle orientation changes separately from keyboard events
2025-08-09 19:49:12 +02:00
Matt 2b2cd5891f Refactor mobile detection to use unified composable
Build And Push Image / docker (push) Successful in 2m52s Details
- Add useMobileDetection composable to centralize device detection logic
- Replace direct utility imports with composable usage across components
- Update MultipleNationalityInput, PhoneInputWrapper, and auth pages
- Simplify mobile-specific styling and behavior handling
- Improve code maintainability by consolidating detection logic
2025-08-09 19:27:15 +02:00
Matt 5535b7905d #### __1. Role-Based Security Architecture__
Build And Push Image / docker (push) Successful in 2m58s Details
- Replaces group-based tiers with proper Keycloak realm roles
- `monaco-user`, `monaco-board`, `monaco-admin` roles
- Backward compatibility with existing group system

#### __2. Advanced User Management__

- Comprehensive user profile synchronization
- Membership data stored in Keycloak user attributes
- Bidirectional sync between NocoDB and Keycloak

#### __3. Session Security & Monitoring__

- Real-time session tracking and management
- Administrative session control capabilities
- Enhanced security analytics foundation

#### __4. Email Workflow System__

- Multiple email types: DUES_REMINDER, MEMBERSHIP_RENEWAL, WELCOME, VERIFICATION
- Customizable email parameters and lifespans
- Advanced email template support

#### __5. Seamless Migration Path__

- All existing functionality continues to work
- New users automatically get realm roles
- Gradual migration from groups to roles
- Zero breaking changes

### 🔧 __What You Can Do Now__

#### __For New Users:__

- Public registrations automatically assign `monaco-user` role
- Portal account creation syncs member data to Keycloak attributes
- Enhanced email verification and welcome workflows

#### __For Administrators:__

- Session management and monitoring capabilities
- Advanced user profile management with member data sync
- Comprehensive role assignment and management
- Enhanced email communication workflows

#### __For Developers:__

- Use `hasRole('monaco-admin')` for role-based checks
- Access `getAllRoles()` for debugging and analytics
- Enhanced `useAuth()` composable with backward compatibility
- Comprehensive TypeScript support throughout

### 🛡️ __Security & Reliability__

- __Backward Compatibility__: Existing users continue to work seamlessly
- __Enhanced Security__: Proper realm role-based authorization
- __Error Handling__: Comprehensive error handling and fallbacks
- __Type Safety__: Full TypeScript support throughout the system
2025-08-08 19:40:13 +02:00
Matt c6a57c7922 Fix redirect loops and SSR hydration issues in auth flow
Build And Push Image / docker (push) Successful in 2m59s Details
- Replace ref with useState in useAuth for SSR compatibility
- Move navigation logic from top-level to onMounted hooks
- Add guest middleware to login page to prevent auth conflicts
- Simplify dashboard auth checks by relying on middleware
- Add loading state to index page during auth resolution

This prevents infinite redirect loops and hydration mismatches that
occurred during server-side rendering when navigating between
authenticated and unauthenticated states.
2025-08-07 17:21:18 +02:00
Matt 423d8c3aa1 Simplify auth system by removing throttling and mobile workarounds
Build And Push Image / docker (push) Successful in 3m0s Details
- Remove session check throttling mechanism from useAuth composable
- Eliminate forced auth check parameters throughout codebase
- Replace window.location redirects with standard navigateTo()
- Remove mobile-specific authentication handling and diagnostics
- Move auth check to onMounted hook in login page
- Clean up console logging for auth operations
2025-08-07 17:12:05 +02:00
Matt 616490dfef Fix auth throttling causing login loops by adding forced session checks
Build And Push Image / docker (push) Successful in 3m27s Details
Add optional force parameter to checkAuth() to bypass throttling during
critical authentication flows like login, middleware, and initial auth
verification. This prevents iOS Safari login loops while maintaining
throttling for regular session checks.
2025-08-07 17:01:01 +02:00
Matt 2843bcf4f5 Fix iOS Safari auth loops and simplify admin dashboard
Build And Push Image / docker (push) Successful in 3m4s Details
- Add session check throttling in useAuth to prevent iOS Safari authentication loops
- Simplify admin dashboard by removing complex system metrics and stats
- Remove system-metrics utility and streamline stats API endpoint
- Update admin interface to focus on core user and role management
2025-08-07 16:20:05 +02:00
Matt 789ecd7eab Refactor login flow to return redirect URL instead of direct navigation
Build And Push Image / docker (push) Successful in 2m43s Details
Move navigation responsibility from useAuth composable to login page
component for better separation of concerns and component control.
2025-08-07 14:27:08 +02:00
Matt 98ef466022 feat: improve login process with enhanced session handling and error management
Build And Push Image / docker (push) Successful in 2m55s Details
2025-08-07 13:51:13 +02:00
Matt 1b2ce79919 feat: enhance login process with session data retrieval and role extraction
Build And Push Image / docker (push) Successful in 3m5s Details
2025-08-07 13:37:54 +02:00
Matt 05b8d97e22 feat: enhance login method with detailed logging for request and response
Build And Push Image / docker (push) Successful in 2m52s Details
2025-08-07 13:13:11 +02:00
Matt cd29123e23 Refactor authentication system with tier-based access control
Build And Push Image / docker (push) Successful in 2m59s Details
- Replace group-based auth with user/board/admin tier system
- Add direct login functionality alongside OAuth
- Implement role-based middleware for route protection
- Create dashboard pages and admin API endpoints
- Add error handling page and improved user management
- Maintain backward compatibility with legacy role methods
2025-08-07 12:28:41 +02:00
Matt 024d0da617 Initialize Nuxt.js project with Docker deployment setup
- Add core Nuxt.js application structure with TypeScript
- Include Docker configuration and deployment guide
- Set up project scaffolding with pages, composables, and middleware
- Add environment configuration and Git ignore rules
2025-08-06 14:31:16 +02:00