Commit Graph

129 Commits

Author SHA1 Message Date
Matt 91dea9910d Move MonacoUSA logo from global overlay to dashboard nav toggle
Build And Push Image / docker (push) Successful in 3m3s Details
Remove global fixed-position logo from app.vue and integrate it as the navigation drawer toggle button in the dashboard layout's app bar. This improves the layout by eliminating overlay positioning issues while maintaining logo visibility and functionality.
2025-08-10 16:54:50 +02:00
Matt ecae3795ee Add global branding and implement member ID system
Build And Push Image / docker (push) Successful in 3m2s Details
- Add MonacoUSA logo component with global header placement
- Implement member ID generation and migration system
- Create profile page and improve dashboard navigation
- Add member ID as payment reference in dues banner
- Enable support contact functionality with pre-filled email
2025-08-10 16:49:23 +02:00
Matt e33f32e15a Disable PWA temporarily to test mobile Safari reload loops
Build And Push Image / docker (push) Successful in 2m54s Details
Temporarily comment out PWA module configuration and service worker
unregistration to debug reload loop issues on mobile Safari. Added
test documentation and console logging for debugging purposes.
2025-08-10 16:25:05 +02:00
Matt 8b05fdd3d7 Add mobile Safari reload loop prevention for auth pages
Build And Push Image / docker (push) Successful in 3m2s Details
- Implement comprehensive reload loop prevention utility
- Add initialization checks to setup-password, verify, and signup pages
- Include timeout protection and error handling for config loading
- Add fallback defaults to prevent page failures on mobile devices
- Document mobile reload loop prevention system
2025-08-10 16:21:54 +02:00
Matt 86977ca92a Fix mobile Safari reload loop by persisting config cache in window object
Build And Push Image / docker (push) Successful in 2m56s Details
- Store config cache in window.__configCache instead of module-level variable to maintain persistence across Vue reactivity cycles
- Fix cardClasses ref to store computed value instead of function
- Add client plugin for config cache initialization
- Add documentation for mobile Safari reload loop fix
2025-08-10 16:09:15 +02:00
Matt 0774e16fb2 Fix mobile browser reload loops by making query parameters static
Build And Push Image / docker (push) Successful in 3m31s Details
Convert reactive computed() query parameters to static ref() values in auth pages to prevent infinite reload loops on mobile browsers. Affects setup-password, verify-expired, and verify-success pages.
2025-08-10 15:58:42 +02:00
Matt 62be77ec34 Add circuit breaker pattern to email verification system
Build And Push Image / docker (push) Successful in 2m53s Details
Implement rate limiting and attempt tracking to prevent verification abuse and infinite reload loops. Add temporary blocking with clear user feedback, enhanced error states, and retry logic. Includes new verification state utilities and improved UI components for better user experience during blocked states.
2025-08-10 15:48:11 +02:00
Matt c4379f0813 fixes
Build And Push Image / docker (push) Successful in 3m14s Details
2025-08-10 15:32:15 +02:00
Matt 0d6a82f03c fixes
Build And Push Image / docker (push) Successful in 3m5s Details
2025-08-10 15:24:52 +02:00
Matt 9572291299 fixes
Build And Push Image / docker (push) Has been cancelled Details
2025-08-10 15:21:43 +02:00
Matt 30136117ce Fix Safari iOS reload loop with static device detection and caching
Build And Push Image / docker (push) Successful in 3m7s Details
- Replace reactive device detection with static utilities to prevent
  infinite reload loops on mobile Safari
- Add static-device-detection.ts for one-time device info computation
- Add config-cache.ts for improved configuration loading performance
- Apply mobile Safari viewport and CSS optimizations across auth pages
- Remove reactive dependencies that caused rendering issues on iOS
2025-08-10 15:18:34 +02:00
Matt 4e53e7ea10 fixes
Build And Push Image / docker (push) Successful in 3m7s Details
2025-08-10 14:54:37 +02:00
Matt 524ecc6941 fixes
Build And Push Image / docker (push) Failing after 2m33s Details
2025-08-10 14:47:40 +02:00
Matt 21bc4909b1 fixes
Build And Push Image / docker (push) Failing after 2m41s Details
2025-08-10 14:41:50 +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 fd08c38ade fixes
Build And Push Image / docker (push) Successful in 3m0s Details
2025-08-09 20:20:26 +02:00
Matt 86a315f24c Fix mobile password input issues and prevent iOS auto-zoom
Build And Push Image / docker (push) Successful in 3m21s Details
- Add togglePasswordVisibility function with mobile-specific handling
- Set font-size to 16px on password inputs to prevent iOS zoom
- Add autocomplete="new-password" attribute to password fields
- Increase tap target size for password visibility toggle on mobile
- Configure viewport meta tag to disable zoom on iOS devices
- Disable transitions on mobile for better performance
2025-08-09 20:08:51 +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 623ad9c3fd Refactor email verification to use JSON responses instead of redirects
Build And Push Image / docker (push) Successful in 2m54s Details
- Replace server-side redirects with JSON API responses for better error handling
- Add support for partial success when Keycloak update fails but token is valid
- Improve error messages with specific status codes (410 for expired, 409 for already used)
- Extract email from API response instead of URL query parameters
- Enable client-side navigation with proper error state management
2025-08-09 19:40:04 +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 d14008efd4 Add password setup flow with server-side validation
Build And Push Image / docker (push) Successful in 3m2s Details
- Replace external password setup link with internal navigation
- Add comprehensive password validation utility with strength requirements
- Create dedicated password setup page and API endpoint
- Streamline user flow from email verification to password creation
2025-08-09 19:11:54 +02:00
Matt 30b7e23319 fixes
Build And Push Image / docker (push) Successful in 2m57s Details
2025-08-09 19:01:44 +02:00
Matt 09773f9571 Looking at the changes, this commit primarily focuses on fixing a critical mobile Safari issue with the country dropdown selector. Here's my suggested commit message:
Build And Push Image / docker (push) Successful in 3m0s Details
```
Fix mobile Safari country dropdown with touch-optimized dialog interface

- Replace broken v-select with mobile-friendly dialog for Safari
- Add device detection to switch between desktop and mobile interfaces
- Implement full-screen country selection with search functionality
- Add touch-optimized UI with larger targets and smooth scrolling
- Update documentation with fix details and implementation notes
```

The main change is addressing a completely broken country selection dropdown on mobile Safari by implementing a mobile-specific dialog interface while maintaining the original desktop experience.
2025-08-09 18:53:26 +02:00
Matt d55f253222 Fix mobile Safari compatibility and correct Keycloak account URL
Build And Push Image / docker (push) Successful in 2m54s Details
- Add mobile Safari utilities and viewport optimizations
- Fix Keycloak setup password URL structure (remove hash fragment causing 404s)
- Implement performance mode and hardware acceleration fixes
- Add responsive CSS optimizations for mobile Safari
- Configure keycloakIssuer in Nuxt config for proper URL generation
2025-08-09 18:44:33 +02:00
Matt 44cdc988ee Add Mobile Safari optimizations and fixes to signup page
Build And Push Image / docker (push) Successful in 3m10s Details
- Implement device detection and performance optimization flags
- Add dynamic CSS classes based on device capabilities
- Create mobile safari utility functions and client plugin
- Optimize backdrop filters and hardware acceleration for iOS
- Fix viewport height issues with mobile Safari fallbacks
- Update membership fee config and add IBAN payment details
- Prevent horizontal scrolling and improve mobile UX
2025-08-09 18:36:10 +02:00
Matt 358e9c0ad1 Add Keycloak integration support
Build And Push Image / docker (push) Successful in 2m59s Details
- Update domain configuration to portal subdomain with HTTPS
- Add keycloak_id field to member creation and update operations
- Add API endpoint for linking Keycloak accounts to existing members
2025-08-09 18:22:34 +02:00
Matt 794b6a09f0 Fix email verification domain and membership fee amount
Build And Push Image / docker (push) Successful in 3m7s Details
- Update domain config to use portal.monacousa.org for verification links
- Correct membership fee from €50 to €150/year in welcome emails
- Add password setup link to verification success page
- Include registration date in welcome email template
2025-08-09 18:10:33 +02:00
Matt a4e8231a3b fixes
Build And Push Image / docker (push) Successful in 2m54s Details
2025-08-09 17:48:03 +02:00
Matt c13ef30f69 fixes
Build And Push Image / docker (push) Successful in 3m1s Details
2025-08-09 17:43:15 +02:00
Matt df1ff15975 Enhance member deletion and implement template-based email system
Build And Push Image / docker (push) Successful in 2m50s Details
- Add Keycloak user deletion to member removal process
- Implement Handlebars email templates for verification, password reset, and dues reminders
- Improve JWT secret configuration with multiple fallbacks
- Add getMemberById function and enhance error handling
- Update Dockerfile to include email templates in production build
2025-08-09 17:36:35 +02:00
Matt bff89bd89d Add JWT configuration and improve email error handling
Build And Push Image / docker (push) Successful in 2m51s Details
- Add jwtSecret to runtime config with fallback to sessionSecret
- Enhance email error tracking in portal account creation API
- Fix jsonwebtoken imports and improve type safety
- Include detailed email error information in API responses
2025-08-09 16:55:59 +02:00
Matt 97653b7307 Preserve masked credentials in admin config updates
Build And Push Image / docker (push) Successful in 2m54s Details
Handle masked sensitive fields (passwords/secrets) in reCAPTCHA and SMTP
configuration endpoints. When the frontend sends masked values (bullets),
preserve existing credentials instead of overwriting them. This prevents
accidental credential loss when updating other configuration fields.

- Check for masked placeholder values ('••••••••••••••••')
- Preserve existing secretKey/password when masked
- Add logging to track credential update actions
2025-08-09 16:41:33 +02:00
Matt c4a0230f42 Fix portal account creation and improve email handling
Build And Push Image / docker (push) Successful in 2m56s Details
- Add explicit POST method to portal account creation API call
- Improve error handling with specific messages for different failure cases
- Remove SMTP verification step that was causing issues with some servers
- Make email sending non-critical to portal account creation success
- Add better response data handling for keycloak_id
- Add integration review documentation
2025-08-09 16:13:52 +02:00
Matt 8d872f9a04 Refactor admin dashboard and fix mobile phone input dropdown
Build And Push Image / docker (push) Successful in 2m54s Details
- Simplify admin dashboard by consolidating configuration sections
- Fix mobile dropdown display issues in PhoneInputWrapper component
- Add proper flex layout and minimum height for mobile country list
- Update email configuration and testing functionality
- Remove redundant configuration cards in favor of unified portal settings
2025-08-09 16:05:00 +02:00
Matt dcb7840825 Make email service initialization asynchronous
Build And Push Image / docker (push) Successful in 3m10s Details
Convert getEmailService() to async function and update all callers to use await.
Replace synchronous require() with dynamic import() for admin-config module.
Add SMTP config loading to admin configuration dialog.
2025-08-09 15:50:54 +02:00
Matt 97a0b5eea6 fixes
Build And Push Image / docker (push) Successful in 2m54s Details
2025-08-08 23:47:21 +02:00
Matt 4ec05e29dc Add email verification system for user registration
Build And Push Image / docker (push) Successful in 3m1s Details
- Add SMTP configuration UI in admin panel with test functionality
- Implement email verification workflow with tokens and templates
- Add verification success/expired pages for user feedback
- Include nodemailer, handlebars, and JWT dependencies
- Create API endpoints for email config, testing, and verification
2025-08-08 22:51:14 +02:00
Matt 7b72d7a565 fixed auth
Build And Push Image / docker (push) Successful in 2m54s Details
2025-08-08 22:10:08 +02:00
Matt 7d9f895ca6 fully functional, production-ready member registration system that works flawlessly across all platforms and provides a professional user experience
Build And Push Image / docker (push) Successful in 3m8s Details
2025-08-08 22:04:53 +02:00
Matt 15dd090d44 fixes
Build And Push Image / docker (push) Successful in 3m7s Details
2025-08-08 21:52:21 +02:00
Matt aed8dc68fc fixes recaptcha
Build And Push Image / docker (push) Successful in 3m12s Details
2025-08-08 21:10:00 +02:00
Matt 3951ce1d4e fixes
Build And Push Image / docker (push) Successful in 3m33s Details
2025-08-08 20:59:06 +02:00
Matt cb73b239a8 fixes
Build And Push Image / docker (push) Successful in 3m7s Details
2025-08-08 20:49:50 +02:00
Matt 3894295569 fixes
Build And Push Image / docker (push) Successful in 2m55s Details
2025-08-08 20:41:39 +02:00
Matt 42d1d012c1 fixes
Build And Push Image / docker (push) Successful in 3m4s Details
2025-08-08 20:27:54 +02:00
Matt 72492fb754 fixes
Build And Push Image / docker (push) Successful in 3m5s Details
2025-08-08 20:07:47 +02:00
Matt 4365cc53ff fixes
Build And Push Image / docker (push) Successful in 2m55s Details
2025-08-08 19:55:32 +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 b308b8272c updates to database schema
Build And Push Image / docker (push) Successful in 2m50s Details
2025-08-08 18:32:46 +02:00
Matt 28fa779dae fixes and cleanup
Build And Push Image / docker (push) Successful in 3m1s Details
2025-08-08 13:50:01 +02:00