@@ -8,6 +8,7 @@ import { Filter } from "bad-words";
88import UserStatsService from "../components/utils/userStatsService.js" ;
99import ModerationLog from "../models/ModerationLog.js" ;
1010import Report from "../models/Report.js" ;
11+ import NameChangeRequest from "../models/NameChangeRequest.js" ;
1112const filter = new Filter ( ) ;
1213
1314export default async function handler ( req , res ) {
@@ -69,6 +70,48 @@ export default async function handler(req, res) {
6970 }
7071 }
7172
73+ // If user has a forced name change, submit for moderator review instead of direct change
74+ if ( user . pendingNameChange ) {
75+ // Check if user already has a pending request
76+ const existingRequest = await NameChangeRequest . findOne ( {
77+ 'user.accountId' : user . _id . toString ( ) ,
78+ status : 'pending'
79+ } ) ;
80+
81+ if ( existingRequest ) {
82+ // Update the existing request with the new name
83+ await NameChangeRequest . findByIdAndUpdate ( existingRequest . _id , {
84+ requestedUsername : username ,
85+ updatedAt : new Date ( )
86+ } ) ;
87+
88+ return res . status ( 200 ) . json ( {
89+ success : true ,
90+ pendingReview : true ,
91+ message : 'Your name change request has been updated. Please wait for moderator review.' ,
92+ requestId : existingRequest . _id
93+ } ) ;
94+ }
95+
96+ // Create new name change request
97+ const nameRequest = await NameChangeRequest . create ( {
98+ user : {
99+ accountId : user . _id . toString ( ) ,
100+ currentUsername : user . username
101+ } ,
102+ requestedUsername : username ,
103+ reason : user . pendingNameChangeReason || 'Forced name change' ,
104+ status : 'pending'
105+ } ) ;
106+
107+ return res . status ( 200 ) . json ( {
108+ success : true ,
109+ pendingReview : true ,
110+ message : 'Your name change request has been submitted. Please wait for moderator review.' ,
111+ requestId : nameRequest . _id
112+ } ) ;
113+ }
114+
72115 if ( user . username ) {
73116 // this means this is a name change, not a first time name set
74117 // check if the user has waited long enough since the last name change
0 commit comments