fix(user): validate and normalize email during user creation

This commit is contained in:
ChinoKou 2026-05-14 09:56:53 +08:00
parent 40b9d60dc8
commit b63060abeb
No known key found for this signature in database
GPG key ID: C4488922FFCFDF9B

View file

@ -27,14 +27,6 @@ const internalUser = {
const auth = data.auth || null;
delete data.auth;
data.email = data.email.toLowerCase().trim();
const emailAvailable = await internalUser.isEmailAvailable(data.email, undefined);
if (!emailAvailable) {
throw new errs.ValidationError(
`Email address already in use - ${data.email}`,
);
}
data.avatar = data.avatar || "";
data.roles = data.roles || [];
@ -43,6 +35,15 @@ const internalUser = {
}
await access.can("users:create", data);
if (typeof data.email !== "undefined" && data.email !== null) {
data.email = data.email.toLowerCase().trim();
const emailAvailable = await internalUser.isEmailAvailable(data.email);
if (!emailAvailable) {
throw new errs.ValidationError(`Email address already in use - ${data.email}`);
}
}
data.avatar = gravatar.url(data.email, { default: "mm" });
let user = await userModel.query().insertAndFetch(data).then(utils.omitRow(omissions()));