Commit Graph

41 Commits

Author SHA1 Message Date
Matt d45ae31f10 FEAT: Unified Authentication System - Support Both Directus and Keycloak Users
**Problem Solved:**
- File previews failing due to unsupported Directus authentication
- Encrypted OIDC cookies causing JSON parse errors
- Need both Directus and Keycloak users to access same dashboard

**Changes:**
- server/utils/auth.ts: Added Directus token validation alongside OIDC
- server/api/auth/session.ts: Support both auth methods with proper user data
- server/api/auth/logout.ts: Clear appropriate cookies based on auth method

**Authentication Methods Now Supported:**
1. X-tag headers (webhooks/external calls)
2. Directus tokens (existing Directus users)
3. OIDC sessions (Keycloak users, encrypted or plain)

**Result:**
- Both Directus and Keycloak users can access dashboard
- File previews work for all authenticated users
- Proper logout handling for each auth method
- No more JSON parse errors for encrypted OIDC cookies
2025-06-15 17:03:42 +02:00
Matt 7ca77e2dcf FIX: Correct OIDC cookie name mismatch across all auth endpoints
**Root Cause:**
- Auth system was looking for 'keycloak-session' cookies
- But actual OIDC system uses 'nuxt-oidc-auth' cookies
- This caused authentication failures for file previews and other endpoints

**Files Updated:**
- server/utils/auth.ts: Updated to check 'nuxt-oidc-auth' cookie
- server/api/auth/session.ts: Updated cookie name references
- server/api/auth/logout.ts: Updated cookie deletion
- server/api/auth/keycloak/callback.ts: Updated cookie creation

**Result:**
- File previews should now work for authenticated users
- All authentication endpoints now use consistent cookie names
- Both x-tag headers and OIDC sessions work correctly
2025-06-15 16:58:45 +02:00
Matt 6c1a1fa842 DEBUG: Add auth debugging logs to identify file preview auth issue 2025-06-15 16:53:20 +02:00
Matt 4b3f75d4cf FIX: Date format issue for NocoDB PostgreSQL integration 2025-06-15 16:52:26 +02:00
Matt 01b770dc6c FIX: Authentication for Keycloak - Phase 1
Updated core interest management endpoints:
-  server/api/create-interest.ts
-  server/api/update-interest.ts
-  server/api/delete-interest.ts
-  Created server/utils/auth.ts with dual auth support

 Next: Update ALL remaining API endpoints systematically
2025-06-15 16:13:22 +02:00
Matt 0ae190b255 MAJOR: Replace keycloak-js with nuxt-oidc-auth for seamless SSO integration
##  **SOLUTION: Migrate to Server-Side OIDC Authentication**

This completely replaces the problematic keycloak-js client-side implementation
with nuxt-oidc-auth, eliminating all CORS and iframe issues.

###  **Benefits:**
- **No more CORS errors** - Server-side OAuth flow
- **No iframe dependencies** - Eliminates cross-domain issues
- **Works with nginx proxy** - No proxy configuration conflicts
- **Better security** - Tokens handled server-side
- **Cleaner integration** - Native Nuxt patterns
- **Maintains Directus compatibility** - Dual auth support

###  **Installation & Configuration:**
- Added
uxt-oidc-auth module to nuxt.config.ts
- Configured Keycloak provider with proper OIDC settings
- Updated environment variables for security keys

###  **Code Changes:**

#### **Authentication Flow:**
- **middleware/authentication.ts** - Updated to check both Directus + OIDC auth
- **composables/useUnifiedAuth.ts** - Migrated to use useOidcAuth()
- **pages/login.vue** - Updated SSO button to use oidcLogin('keycloak')

#### **Configuration:**
- **nuxt.config.ts** - Added OIDC provider configuration
- **.env.example** - Updated with nuxt-oidc-auth environment variables
- Removed old Keycloak runtime config

#### **Cleanup:**
- Removed keycloak-js dependency from package.json
- Deleted obsolete files:
  - composables/useKeycloak.ts
  - pages/auth/callback.vue
  - server/utils/keycloak-oauth.ts
  - server/api/debug/ directory

###  **Authentication Routes (Auto-Generated):**
- /auth/keycloak/login - SSO login endpoint
- /auth/keycloak/logout - SSO logout endpoint
- /auth/keycloak/callback - OAuth callback (handled automatically)

###  **Security Setup Required:**
Environment variables needed for production:
- NUXT_OIDC_PROVIDERS_KEYCLOAK_CLIENT_SECRET
- NUXT_OIDC_TOKEN_KEY (base64 encoded 32-byte key)
- NUXT_OIDC_SESSION_SECRET (48-character random string)
- NUXT_OIDC_AUTH_SESSION_SECRET (48-character random string)

###  **Expected Results:**
 SSO login should work without CORS errors
 Compatible with nginx proxy setup
 Maintains existing Directus authentication
 Server-side session management
 Automatic token refresh

Ready for container rebuild and production testing!
2025-06-14 15:58:03 +02:00
Matt 0c9cd89667 Implement Official Keycloak JS Adapter with Proxy-Aware Configuration
MAJOR ENHANCEMENT: Complete Keycloak integration with proper HTTPS/proxy handling

## Core Improvements:

### 1. Enhanced Configuration (nuxt.config.ts)
- Added proxy trust configuration for nginx environments
- Configured baseUrl for production HTTPS enforcement
- Added debug mode configuration for development

### 2. Proxy-Aware Keycloak Composable (composables/useKeycloak.ts)
- Intelligent base URL detection (production vs development)
- Force HTTPS redirect URIs in production environments
- Enhanced debugging and logging capabilities
- Proper PKCE implementation for security
- Automatic token refresh mechanism

### 3. Dual Authentication System
- Updated middleware to support both Directus and Keycloak
- Enhanced useUnifiedAuth for seamless auth source switching
- Maintains backward compatibility with existing Directus users

### 4. OAuth Flow Implementation
- Created proper callback handler (pages/auth/callback.vue)
- Comprehensive error handling and user feedback
- Automatic redirect to dashboard on success

### 5. Enhanced Login Experience (pages/login.vue)
- Restored SSO login button with proper error handling
- Maintained existing Directus login form
- Clear separation between auth methods with visual divider

### 6. Comprehensive Testing Suite (pages/dashboard/keycloak-test.vue)
- Real-time configuration display
- Authentication status monitoring
- Interactive testing tools
- Detailed debug logging system

## Technical Solutions:

 **Proxy Detection**: Automatically detects nginx proxy and uses correct HTTPS URLs
 **HTTPS Enforcement**: Forces secure redirect URIs in production
 **Error Handling**: Comprehensive error catching with user-friendly messages
 **Debug Capabilities**: Enhanced logging for troubleshooting
 **Security**: Implements PKCE and secure token handling

## Infrastructure Compatibility:
- Works with nginx reverse proxy setups
- Compatible with Docker container networking
- Handles SSL termination at proxy level
- Supports both development and production environments

This implementation specifically addresses the HTTP/HTTPS redirect URI mismatch
that was causing 'unauthorized_client' errors in the proxy environment.
2025-06-14 15:26:26 +02:00
Matt 331d8b8194 REVERT Network Updates 2025-06-12 21:54:47 +02:00
Matt f6508aa435 Major Updates to Network and Load Balancing 2025-06-12 21:50:01 +02:00
Matt f111f76a3b email server updates 2025-06-12 18:05:42 +02:00
Matt 9f792be7de CRITICAL FIX: Resolve NocoDB field clearing issue for EOI cleanup
Root Cause Resolution:
- NocoDB API requires null values (not undefined) to clear database fields
- Updated updateInterest utility to automatically convert undefined  null
- This ensures signature links and documensoID are properly cleared from database

 Database Cleanup Enhancements:
- Fixed all EOI deletion endpoints to properly clear embedded signature links
- Both delete-generated-document and delete-document now clear ALL fields:
  * EmbeddedSignatureLinkClient, EmbeddedSignatureLinkCC, EmbeddedSignatureLinkDeveloper
  * Signature Link Client, Signature Link CC, Signature Link Developer
  * documensoID and all related EOI metadata

 Added Debug Capabilities:
- Created test-eoi-cleanup.ts endpoint for debugging cleanup operations
- Enhanced logging in NocoDB utility for field conversion tracking
- Better error handling and validation throughout cleanup process

 Technical Implementation:
- NocoDB utility now automatically handles undefined  null conversion
- Comprehensive field clearing in allowedFields array
- Proper TypeScript typing for all cleanup operations
- Enhanced logging for troubleshooting database operations

This resolves the persistent issue where signature links and document IDs remained in the database after EOI deletion, ensuring complete cleanup and proper state reset.
2025-06-12 17:36:27 +02:00
Matt 64c35b70f8 Improve email session management and add IMAP connection pooling
- Switch from localStorage to sessionStorage for email sessions
- Add session validation on component mount
- Implement IMAP connection pool with folder search capabilities
- Add operation locking utility for concurrent request handling
- Refactor EOI section component structure
- Update API endpoints for better email thread management
2025-06-12 15:53:12 +02:00
Matt c8113c4148 fixes 2025-06-11 18:59:16 +02:00
Matt bc591f687f fixes 2025-06-11 16:05:19 +02:00
Matt ab85dc5d55 updates 2025-06-11 14:28:03 +02:00
Matt 0b6601fabc updates 2025-06-11 13:54:04 +02:00
Matt 2c575b321f updates 2025-06-10 21:09:07 +02:00
Matt 0a541f658d Improve email loading performance and fix UI issues
- Fixed refresh button icon not displaying (changed from icon prop to v-icon element)
- Reduced default email limit from 50 to 20 to improve loading speed
- Optimized cached email loading to only load most recent emails (up to limit)
- Fixed CommonJS require error in email-utils.ts (changed to ES module import)
- Added sorting to cached files to ensure newest emails are loaded first

This should significantly improve email loading performance from 578 cached files down to max 20
2025-06-10 18:04:31 +02:00
Matt bd07939c3d updates 2025-06-10 14:05:09 +02:00
Matt 218705da52 Add EOI automation system with email processing and document management
- Implement automated EOI processing from sales emails
- Add EOI document upload and management capabilities
- Enhance email thread handling with better parsing and grouping
- Add retry logic and error handling for file operations
- Introduce Documeso integration for document processing
- Create server tasks and plugins infrastructure
- Update email composer with improved attachment handling
2025-06-10 13:59:09 +02:00
Matt 5c30411c2b updates 2025-06-10 12:54:22 +02:00
Matt 5e4b20f6ae fixes 2025-06-10 12:31:00 +02:00
Matt d9fb94a76c Refactor EOI management into dedicated component
Extract EOI links and generation functionality from InterestDetailsModal
into a new reusable EOISection component. This improves code organization
and maintainability while adding debounce support for form submissions.

- Create new EOISection.vue component for EOI management
- Remove inline EOI links section from InterestDetailsModal
- Add debounce utility for form submission handling
- Update email generation and thread fetching logic
- Update related types and utilities
2025-06-10 00:37:43 +02:00
Matt 76d04a1e2a updates 2025-06-10 00:15:36 +02:00
Matt 2da6c06aab updates 2025-06-09 23:48:00 +02:00
Matt cc2cc282b9 fixes 2025-06-09 23:42:31 +02:00
Matt 2f1f970267 updates 2025-06-09 23:38:35 +02:00
Matt 48cee6f849 Fix 502 errors on container restart and expand API authentication
- Handle 502 Gateway Timeout errors by clearing invalid sessions
- Add graceful session validation failure handling in fetch-thread API
- Expand x-tag authentication to accept additional valid token
- Add debug logging to berth-related API endpoints
- Document the 502 error fix in email system documentation
2025-06-09 23:29:24 +02:00
Matt 1866dfd010 Add debug logging and update API authentication
- Add comprehensive logging to all interest API endpoints and NocoDB utilities
- Update create-interest and delete-interest endpoints to accept additional x-tag value
- Add missing imports for deleteInterest and updateInterest functions
- Log request details, processing steps, and errors for better debugging
2025-06-09 23:19:52 +02:00
Matt 618c888b85 Add email communication system with encrypted credentials
- Add email components for composing, viewing threads, and credential setup
- Implement server API endpoints for sending emails and fetching threads
- Add encryption utilities for secure credential storage
- Configure email settings in environment variables
- Integrate email functionality into interest details modal
2025-06-09 21:45:06 +02:00
Matt 2ea72ef24e Add interest deletion and sales pipeline status tracking
- Add delete button with confirmation dialog to InterestDetailsModal
- Implement delete-interest API endpoint
- Add sales pipeline status section with visual indicators
- Update UI states to handle deletion loading states
- Add color-coded sales process level selection
2025-06-04 19:51:51 +02:00
Matt bac1bb2b5e Add file rename functionality and improve preview handling
- Implement file/folder rename feature with dialog and API endpoint
- Add rename button to file browser with keyboard shortcuts
- Switch PDF preview from object to embed tag for better compatibility
- Fix CORS issues by fetching preview files as blobs with object URLs
- Add proper cleanup for object URLs to prevent memory leaks
- Add renameObject utility function for MinIO operations
2025-06-04 18:14:00 +02:00
Matt 7d5b39b29d Add preview URL logging and clean up MinIO verbose logs
- Add logging for generated preview URLs with truncated URL for security
- Remove verbose logging from MinIO listObjectsV2 operations
- Add proper handling for folder prefixes returned by MinIO
- Keep only essential error/debug information in file listing
2025-06-04 17:15:03 +02:00
Matt 254cfa63a4 Fix folder display and add validation to file listing operations
- Handle folder names properly in getDisplayName by preserving trailing slash
- Add validation to skip invalid objects during listing
- Add default values for missing object properties (size, lastModified, etag)
- Add debug logging for listObjectsV2 operations to help troubleshoot issues
- Add null checks in deleteFolder to prevent errors with invalid objects
2025-06-04 17:09:28 +02:00
Matt 39ddebe259 Remove debug logs and improve file listing logic
Cleaned up console.log statements from MinIO client initialization and file listing operations. Refactored folder detection logic to better handle root level files and nested folder structures in non-recursive mode.
2025-06-04 16:56:42 +02:00
Matt 6c3f678554 Fix MinIO connection by disabling SSL and add debugging
- Change MinIO configuration to use non-SSL connection (useSSL: false)
- Add test-connection endpoint to verify MinIO connectivity
- Add comprehensive logging to track connection issues
- Enhance error messages in list files API for better debugging
2025-06-04 16:41:59 +02:00
Matt 61cefa530e Add MinIO file browser with upload, preview, and management features
- Implement file browser UI with upload/download capabilities
- Add API endpoints for file operations (list, upload, delete, preview)
- Create FileUploader and FilePreviewModal components
- Configure MinIO integration with environment variables
- Add documentation for MinIO file browser setup
2025-06-04 16:32:50 +02:00
Ron 762fddea70 feat: add new status columns 2025-06-04 00:48:44 +03:00
Ron bc0fa6fbe0 feat: add interest button 2025-06-03 22:04:22 +03:00
Ron b3651e7f43 feat: update 2025-06-03 18:57:08 +03:00
Ron b4313dd815 feat: changes 2025-05-29 08:32:13 +03:00