Merge pull request #4508 from Infisical/feat/ENG-3666

Allow users to change the email of their accounts
This commit is contained in:
carlosmonastyrski
2025-09-11 12:36:02 -03:00
committed by GitHub
18 changed files with 545 additions and 6 deletions
+1
View File
@@ -749,6 +749,7 @@ export const registerRoutes = async (
const userService = userServiceFactory({
userDAL,
orgDAL,
orgMembershipDAL,
tokenService,
permissionService,
@@ -129,6 +129,63 @@ export const registerUserRouter = async (server: FastifyZodProvider) => {
}
});
server.route({
method: "POST",
url: "/me/email-change/otp",
config: {
rateLimit: smtpRateLimit({
keyGenerator: (req) => req.permission.id
})
},
schema: {
body: z.object({
newEmail: z.string().email().trim()
}),
response: {
200: z.object({
success: z.boolean(),
message: z.string()
})
}
},
preHandler: verifyAuth([AuthMode.JWT], { requireOrg: false }),
handler: async (req) => {
const result = await server.services.user.requestEmailChangeOTP({
userId: req.permission.id,
newEmail: req.body.newEmail
});
return result;
}
});
server.route({
method: "PATCH",
url: "/me/email",
config: {
rateLimit: writeLimit
},
schema: {
body: z.object({
newEmail: z.string().email().trim(),
otpCode: z.string().trim().length(6)
}),
response: {
200: z.object({
user: UsersSchema
})
}
},
preHandler: verifyAuth([AuthMode.JWT], { requireOrg: false }),
handler: async (req) => {
const user = await server.services.user.updateUserEmail({
userId: req.permission.id,
newEmail: req.body.newEmail,
otpCode: req.body.otpCode
});
return { user };
}
});
server.route({
method: "GET",
url: "/me/organizations",