Files
FrozenFriendsYume/packages/backend/built/services/validate-email-for-account.js
T
2026-07-26 18:25:37 +09:00

26 lines
995 B
JavaScript

import { validate as validateEmail } from "deep-email-validator";
import { UserProfiles } from "../models/index.js";
import { fetchMeta } from "../misc/fetch-meta.js";
export async function validateEmailForAccount(emailAddress) {
const meta = await fetchMeta();
const exist = await UserProfiles.countBy({
emailVerified: true,
email: emailAddress
});
const validated = meta.enableActiveEmailValidation ? await validateEmail({
email: emailAddress,
validateRegex: true,
validateMx: true,
validateTypo: false,
validateDisposable: true,
validateSMTP: false
}) : {
valid: true
};
const available = exist === 0 && validated.valid;
return {
available,
reason: available ? null : exist !== 0 ? "used" : validated.reason === "regex" ? "format" : validated.reason === "disposable" ? "disposable" : validated.reason === "mx" ? "mx" : validated.reason === "smtp" ? "smtp" : null
};
}