2.8 KiB
PHASE 10: Users & Profiles
Status: ⬜ Not Started
Estimated Time: 8-10 hours
Priority: HIGH
Depends On: Phase 1 (Foundation), Phase 2 (Authentication)
Blocks: Phase 12 (Pages Migration)
🎯 Goal
Migrate all user profile and user management functionality from Supabase to Django.
📋 Tasks
Task 10.1: Users Service (3 hours)
class UsersService extends BaseService {
// GET /users/{id}/
async getUser(userId: string): Promise<User>
// GET /users/{id}/profile/
async getUserProfile(userId: string): Promise<UserProfile>
// PATCH /users/{id}/profile/
async updateUserProfile(userId: string, data: Partial<ProfileData>): Promise<UserProfile>
// GET /users/search/?q={query}
async searchUsers(query: string): Promise<User[]>
// POST /users/{id}/block/
async blockUser(userId: string): Promise<void>
// DELETE /users/{id}/block/
async unblockUser(userId: string): Promise<void>
// GET /users/{id}/blocked/
async getBlockedUsers(userId: string): Promise<User[]>
}
- Create
src/services/users/usersService.ts - Create types and mappers
- Handle profile updates
- Handle user blocking
Task 10.2: Update Profile Pages (3 hours)
Files:
-
src/pages/Profile.tsx -
src/components/profile/UserReviewsList.tsx -
src/components/profile/RideCreditsManager.tsx -
src/components/profile/UserBlockButton.tsx -
Replace
supabase.from('profiles')withusersService -
Replace
supabase.rpc('get_filtered_profile') -
Update profile editing
-
Test profile display
Task 10.3: Update Settings Pages (3 hours)
Files:
-
src/pages/Settings.tsx -
src/components/settings/AccountProfileTab.tsx -
src/components/settings/SecurityTab.tsx -
src/components/settings/PrivacyTab.tsx -
src/components/settings/LocationTab.tsx -
src/components/settings/DataExportTab.tsx -
Replace all Supabase auth/profile calls
-
Update email change flow
-
Update password change flow
-
Update account deletion flow
-
Update data export
Task 10.4: Update User Blocking (1-2 hours)
Files:
-
src/components/privacy/BlockedUsers.tsx -
src/components/profile/UserBlockButton.tsx -
Replace block/unblock operations
-
Update blocked users list
-
Test blocking functionality
🎯 Success Criteria
- User profiles display correctly
- Profile editing works
- Settings pages work
- User blocking works
- Avatar uploads work
- Email change works
- Password change works
- Data export works
- Account deletion works
- Zero
supabase.from('profiles')calls - Zero
supabase.auth.updateUser()calls (except in auth service)
⏭️ Next Phase
Phase 11: Contact & Reports