Commit graph

2174 commits

Author SHA1 Message Date
senke
a954fbbb1d [BE-DB-002] backend-database: Add foreign key constraints where missing
- Created migration 930_add_missing_foreign_keys.sql
- Added FK constraints for legacy fields: tracks.user_id, rooms.owner_id, messages.user_id, messages.parent_id
- Added FK constraint for audit_logs.user_id
- All constraints use ON DELETE SET NULL for legacy fields and audit_logs
- Verified primary foreign keys already have proper constraints in existing migrations
- Models already have proper GORM foreignKey tags

Phase: PHASE-1
Priority: P0
Progress: 12/267 (4.5%)
2025-12-23 01:48:33 +01:00
senke
eb3c467f85 [BE-DB-001] backend-database: Add database indexes for performance-critical queries
- Created migration 920_add_performance_indexes.sql
- Added indexes on tracks.status, tracks.user_id, tracks.stream_status
- Added composite index on tracks(user_id, status)
- Added indexes on playlists.is_public, user_sessions.is_active
- Added composite index on user_sessions(user_id, is_active)
- Verified existing indexes on users.email, users.username, tracks.creator_id, playlists.user_id, sessions.user_id

Phase: PHASE-1
Priority: P0
Progress: 11/267 (4.1%)
2025-12-23 01:47:33 +01:00
senke
890642b23e [FE-API-002] frontend-api: Enable playlist collaborator service calls
- Removed requireFeature guards from collaborator functions
- Updated addCollaborator to use unwrapped response format
- Implemented getCollaborators to call GET endpoint
- Enabled PLAYLIST_COLLABORATION feature flag
- All collaborator CRUD operations now functional

Phase: PHASE-1
Priority: P0
Progress: 10/267 (3.7%)
2025-12-23 01:46:43 +01:00
senke
b618acf30a [FE-API-001] frontend-api: Enable 2FA service calls when backend is ready
- Replaced axios with apiClient for automatic authentication
- Updated URLs to use /auth/2fa/* endpoints (was /2fa/*)
- Fixed verify() to accept (secret, code) matching backend
- Fixed disable() to accept password instead of code
- Enabled TWO_FACTOR_AUTH feature flag
- Service now properly calls backend endpoints

Phase: PHASE-1
Priority: P0
Progress: 9/267 (3.4%)
2025-12-23 01:45:47 +01:00
senke
9623e97818 [INT-003] integration: Fix auth/login response format mismatch
- Added username field to UserResponse in Login handler
- Backend now returns { user: { id, email, username }, token: { access_token, refresh_token, expires_in } }
- Format matches frontend AuthResponse type
- Frontend client API already handles unwrapping correctly
- DTOs already use correct JSON tags (snake_case)

Phase: PHASE-1
Priority: P0
Progress: 8/267 (3.0%)
2025-12-23 01:44:54 +01:00
senke
012acf3ca0 [INT-002] integration: Fix type mismatches between frontend and backend
- Fixed queue_job_id: number -> string in hlsService.ts
- Fixed track_id: number -> string in trackService.ts
- Fixed id: number -> string in usePlaylistNotifications.ts
- Fixed Role.id, Permission.id, UserRole.id, UserRole.role_id, AssignRoleRequest.role_id: number -> string in role.ts
- Fixed playlist_id: number -> string in PlaylistAnalytics.tsx
- All IDs now consistently use string (UUID) type matching backend DTOs
- Backend already uses uuid.UUID for all entity IDs

Phase: PHASE-1
Priority: P0
Progress: 7/267 (2.6%)
2025-12-23 01:43:48 +01:00
senke
ace238a684 [INT-001] integration: Fix API response format inconsistencies
- Fixed nested response structures in profile_handler.go (3 occurrences)
- Fixed nested response structures in playlist_handler.go (4 occurrences)
- Changed gin.H{"profile": profile} to profile directly
- Changed gin.H{"playlist": playlist} to playlist directly
- Changed gin.H{"collaborator": collaborator} to collaborator directly
- All responses now use consistent { success: true, data: {...} } format
- Frontend interceptor already handles unwrapping correctly

Phase: PHASE-1
Priority: P0
Progress: 6/267 (2.2%)
2025-12-23 01:42:53 +01:00
senke
a8bf8da2e6 [BE-API-002] api: Implement playlist collaborators endpoints
- Added routes in router.go: POST, GET, PUT, DELETE /playlists/:id/collaborators
- Applied RequireOwnershipOrAdmin middleware to POST, PUT, DELETE routes
- GET route accessible to collaborators (service layer checks permissions)
- Fixed UpdateCollaboratorPermission handler to use RespondWithAppError
- All handlers already existed in playlist_handler.go
- All endpoints properly authenticated and ownership checks enforced

Phase: PHASE-1
Priority: P0
Progress: 5/267 (1.9%)
2025-12-23 01:41:43 +01:00
senke
6a4f9f9fdd [BE-API-001] api: Implement 2FA endpoints (setup, verify, disable)
- Created TwoFactorHandler with SetupTwoFactor, VerifyTwoFactor, DisableTwoFactor, GetTwoFactorStatus
- Added routes: POST /auth/2fa/setup, POST /auth/2fa/verify, POST /auth/2fa/disable, GET /auth/2fa/status
- Updated LoginResponse DTO to include requires_2fa flag
- Updated Login handler to check 2FA status and return requires_2fa flag when enabled
- Reused existing TwoFactorService (already had QR generation and TOTP verification)
- Added VerifyTOTPCode helper method to TwoFactorService
- All endpoints properly authenticated with RequireAuth middleware

Phase: PHASE-1
Priority: P0
Progress: 4/267 (1.5%)
2025-12-23 01:40:28 +01:00
senke
c281637367 [BE-SEC-003] security: Fix ownership verification for playlist updates/deletes
- Added RequireOwnershipOrAdmin middleware to PUT/DELETE /playlists/:id routes
- Created playlistOwnerResolver that loads playlist from DB and returns owner user_id
- Service already handles ownership checks and collaborator permissions
- All existing integration tests pass (TestUpdatePlaylist_AsOwner, TestUpdatePlaylist_NotOwner, TestDeletePlaylist_AsOwner, TestDeletePlaylist_NotOwner)

Phase: PHASE-1
Priority: P0
Progress: 3/267 (1.1%)
2025-12-23 01:37:56 +01:00
senke
1428adeefc [BE-SEC-002] security: Fix ownership verification for track updates/deletes
- Verified RequireOwnershipOrAdmin middleware is correctly applied to PUT/DELETE /tracks/:id
- Verified trackOwnerResolver correctly loads track from DB and returns user_id
- Added comprehensive integration tests for ownership verification
- Test: user cannot update another user's track (403 Forbidden)
- Test: user cannot delete another user's track (403 Forbidden)
- Test: admin can update any track (200 OK)
- Test: admin can delete any track (200 OK)
- Test: user can update own track (200 OK)
- Test: user can delete own track (200 OK)
- All tests pass

Phase: PHASE-1
Priority: P0
Progress: 2/267 (0.7%)
2025-12-23 01:37:10 +01:00
senke
b6bdf82d2b [BE-SEC-001] security: Fix ownership verification for user profile updates
- Verified RequireOwnershipOrAdmin middleware is correctly applied to PUT /users/:id
- Added integration tests for ownership verification
- Test: user cannot update another user's profile (403 Forbidden)
- Test: admin can update any profile (200 OK)
- Test: user can update own profile (200 OK)
- All tests pass

Phase: PHASE-1
Priority: P0
Progress: 1/267 (0.4%)
2025-12-23 01:36:04 +01:00
senke
a3d7f3a3cc fix(MVP-015): Standardize remember_me field name to snake_case 2025-12-22 23:27:51 +01:00
senke
f52fb0b289 fix(MVP-014): Add CORS credentials configuration validation 2025-12-22 23:17:24 +01:00
senke
f808d0323c fix(MVP-013): Add error correlation with request IDs in logs 2025-12-22 23:13:49 +01:00
senke
3b09d15e93 fix(MVP-012): Add retry logic with exponential backoff for 502/503 errors 2025-12-22 23:10:52 +01:00
senke
9b3363a6a6 fix(MVP-011): Simplify token refresh response handling to single format 2025-12-22 23:06:52 +01:00
senke
013413246e fix(MVP-010): Fix error code type in Zod schemas (string → number) 2025-12-22 23:05:08 +01:00
senke
b3643af83c fix(MVP-009): Fix GetMe endpoint to return full user object from database 2025-12-22 23:03:46 +01:00
senke
e37f0af1e4 fix(MVP-008): Add feature flags to disable non-MVP features with missing endpoints 2025-12-22 23:01:36 +01:00
senke
81696374fd fix(MVP-007): Fix profile endpoint paths to match backend routes 2025-12-22 22:58:18 +01:00
senke
4d8c019abf fix(MVP-006): Standardize environment variable names (VITE_API_BASE_URL → VITE_API_URL) 2025-12-22 22:56:37 +01:00
senke
6d036133ca batch 1 2025-12-22 22:00:50 +01:00
senke
463109c4e0 fix(INT-000002): Multiple Auth Storage Mechanisms
- Unified token storage to use TokenStorage service
- Removed deprecated token-manager.ts
- Removed fallback storage logic in API client
- Updated tests and feature components to use TokenStorage

Resolves: INT-000002
Severity: P0
2025-12-22 09:53:47 -05:00
senke
cb2888e357 fix(INT-000001): CORS Configuration Will Break Production
- Updated docker-compose.production.yml to set APP_ENV=production
- Added CORS_ALLOWED_ORIGINS configuration to backend-api service
- Created integration tracking documents

Resolves: INT-000001
Severity: P0
2025-12-22 09:39:48 -05:00
senke
fd6eca0eea reviewing and documenting frontend x backend inbtegration status 2025-12-21 19:41:45 -05:00
senke
d50832ca42 stabilizing apps/web: THIRD BATCH - FIXED Playwright 2025-12-21 18:55:51 -05:00
senke
c65563863a stabilizing apps/web: SECOND BATCH - FIXING Playwright 2025-12-17 12:20:42 -05:00
senke
76c7cc52d8 fix(frontend): STATUS OVERVIEW 2025-12-17 09:20:58 -05:00
senke
a2b8d1dc47 fix(frontend): stabilize architecture (router, lazy loading, build, auth) 2025-12-17 09:15:45 -05:00
senke
ae1c9c2795 stabilizing apps/web: FIRST BATCH 2025-12-17 08:07:35 -05:00
senke
3f7bf2e2d3 stabilizing apps/web: SITUATION AWARENESS 2025-12-16 14:40:16 -05:00
senke
980858b17e stabilizing veza-backend-api: LAST REMEDIATION 2025-12-16 14:07:36 -05:00
senke
67af0567a5 stabilizing veza-backend-api: P3 - FINAL 2025-12-16 13:37:36 -05:00
senke
a7d463b8fd stabilizing veza-backend-api: P1 & P2 2025-12-16 13:34:08 -05:00
senke
83e4463b4b stabilizing veza-backend-api: P0 2025-12-16 11:59:56 -05:00
senke
d0fe8c8ad7 stabilizing veza-backend-api: phase 1 2025-12-16 11:23:49 -05:00
senke
d33c351ac6 refonte: backend-api go first; phase 1 2025-12-12 21:34:34 -05:00
okinrev
8d6ce72bb2 report generation and future tasks selection 2025-12-08 19:57:54 +01:00
okinrev
5c9bcdda2b fix(redis,rabbitmq): clean dev/lab behavior 2025-12-07 14:28:55 +01:00
okinrev
8300682582 chore(dev): add lab migration and run scripts 2025-12-07 14:27:51 +01:00
okinrev
f67395c4dd fix(health): make readiness check reflect real dependency state 2025-12-07 14:27:07 +01:00
okinrev
0a37028da6 fix(db): align automatic migrations with SQL files 2025-12-07 14:26:48 +01:00
okinrev
1db312244a Merge pull request #2 from okinrev/remediation/full_audit_fix
Remediation/full audit fix
2025-12-06 17:53:06 +01:00
okinrev
fc1807ea15 refactor(marketplace): enforce unified api response envelope 2025-12-06 17:39:04 +01:00
okinrev
f13d04917c refactor(track): enforce unified api response envelope 2025-12-06 17:37:00 +01:00
okinrev
c14c647581 feat(api): remediate missing openapi spec and annotate handlers 2025-12-06 17:34:18 +01:00
okinrev
8caa2fd7ca STABILISATION: phase 3–5 – API contract, tests & chat-server hardening 2025-12-06 17:21:59 +01:00
okinrev
25e82d1e3d STABILISATION: phase 1 & phase 2 2025-12-06 14:45:07 +01:00
okinrev
54a16ac2e0 feat(backend-worker): persist job queue in postgres 2025-12-06 13:32:32 +01:00