docs: add username fix documentation
This commit is contained in:
61
server/USERNAME_FIX.md
Normal file
61
server/USERNAME_FIX.md
Normal file
@@ -0,0 +1,61 @@
|
|||||||
|
# Username Display Fix
|
||||||
|
|
||||||
|
## Issue
|
||||||
|
Users were seeing duplicate prefixes in their usernames (e.g., `@user_user_35ZFZ...`) on their profile pages.
|
||||||
|
|
||||||
|
## Root Cause
|
||||||
|
When auto-creating users from Clerk authentication, the code was generating usernames using the pattern:
|
||||||
|
```typescript
|
||||||
|
username: clerkUser.username || `user_${clerkId}`
|
||||||
|
```
|
||||||
|
|
||||||
|
Since Clerk IDs already start with `user_`, this resulted in usernames like `user_user_35ZFZ...`.
|
||||||
|
|
||||||
|
## Solution
|
||||||
|
|
||||||
|
### 1. Updated User Creation Logic
|
||||||
|
Modified the username generation in both `userService.ts` and `reportController.ts`:
|
||||||
|
|
||||||
|
```typescript
|
||||||
|
// Generate a clean username from Clerk ID (remove 'user_' prefix if present)
|
||||||
|
const cleanClerkId = clerkId.startsWith('user_') ? clerkId.substring(5) : clerkId;
|
||||||
|
const defaultUsername = clerkUser.username || `user${cleanClerkId.substring(0, 8)}`;
|
||||||
|
```
|
||||||
|
|
||||||
|
Now generates usernames like `user35ZFZ...` instead of `user_user_35ZFZ...`.
|
||||||
|
|
||||||
|
### 2. Migration Script
|
||||||
|
Created `fixDuplicateUsernames.ts` to update existing users with duplicate prefixes:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
npx ts-node src/scripts/fixDuplicateUsernames.ts
|
||||||
|
```
|
||||||
|
|
||||||
|
This script:
|
||||||
|
- Finds all users with usernames starting with `user_user_`
|
||||||
|
- Updates them to remove the duplicate prefix
|
||||||
|
- Example: `user_user_35Z` → `user35Z`
|
||||||
|
|
||||||
|
### 3. Profile Display
|
||||||
|
Also removed email display from the user profile page for privacy.
|
||||||
|
|
||||||
|
## Result
|
||||||
|
- New users will have clean usernames: `user35ZFZ...`
|
||||||
|
- Existing users have been migrated to the new format
|
||||||
|
- Profile pages now show `@user35ZFZ...` instead of `@user_user_35ZFZ...`
|
||||||
|
- Email addresses are no longer displayed on profile pages
|
||||||
|
|
||||||
|
## Files Modified
|
||||||
|
- `server/src/services/userService.ts` - Updated user creation logic
|
||||||
|
- `server/src/controllers/reportController.ts` - Updated user creation logic
|
||||||
|
- `server/src/scripts/fixDuplicateUsernames.ts` - Migration script (new)
|
||||||
|
- `src/pages/UserProfilePage.tsx` - Removed email display
|
||||||
|
|
||||||
|
## Testing
|
||||||
|
Run the migration script to fix any existing users:
|
||||||
|
```bash
|
||||||
|
cd server
|
||||||
|
npx ts-node src/scripts/fixDuplicateUsernames.ts
|
||||||
|
```
|
||||||
|
|
||||||
|
The script is idempotent and safe to run multiple times.
|
||||||
Reference in New Issue
Block a user