2024-09-30 16:31:19 +03:00

111 lines
3.3 KiB
JavaScript

'use strict';
const { yup, validateYupSchema } = require('@strapi/utils');
const callbackSchema = yup.object({
identifier: yup.string().required(),
password: yup.string().required(),
});
const registerSchema = (config) =>
yup.object({
email: yup.string().email().required(),
username: yup.string().required(),
password: yup
.string()
.required()
.test(async function (value) {
if (typeof config?.validatePassword === 'function') {
try {
const isValid = await config.validatePassword(value);
if (!isValid) {
return this.createError({ message: 'Password validation failed.' });
}
} catch (error) {
return this.createError({ message: error.message || 'An error occurred.' });
}
}
return true;
}),
});
const sendEmailConfirmationSchema = yup.object({
email: yup.string().email().required(),
});
const validateEmailConfirmationSchema = yup.object({
confirmation: yup.string().required(),
});
const forgotPasswordSchema = yup
.object({
email: yup.string().email().required(),
})
.noUnknown();
const resetPasswordSchema = (config) =>
yup
.object({
password: yup
.string()
.required()
.test(async function (value) {
if (typeof config?.validatePassword === 'function') {
try {
const isValid = await config.validatePassword(value);
if (!isValid) {
return this.createError({ message: 'Password validation failed.' });
}
} catch (error) {
return this.createError({ message: error.message || 'An error occurred.' });
}
}
return true;
}),
passwordConfirmation: yup
.string()
.required()
.oneOf([yup.ref('password')], 'Passwords do not match'),
code: yup.string().required(),
})
.noUnknown();
const changePasswordSchema = (config) =>
yup
.object({
password: yup
.string()
.required()
.test(async function (value) {
if (typeof config?.validatePassword === 'function') {
try {
const isValid = await config.validatePassword(value);
if (!isValid) {
return this.createError({ message: 'Password validation failed.' });
}
} catch (error) {
return this.createError({ message: error.message || 'An error occurred.' });
}
}
return true;
}),
passwordConfirmation: yup
.string()
.required()
.oneOf([yup.ref('password')], 'Passwords do not match'),
currentPassword: yup.string().required(),
})
.noUnknown();
module.exports = {
validateCallbackBody: validateYupSchema(callbackSchema),
validateRegisterBody: (config) => validateYupSchema(registerSchema(config)),
validateSendEmailConfirmationBody: validateYupSchema(sendEmailConfirmationSchema),
validateEmailConfirmationBody: validateYupSchema(validateEmailConfirmationSchema),
validateForgotPasswordBody: validateYupSchema(forgotPasswordSchema),
validateResetPasswordBody: (config) => validateYupSchema(resetPasswordSchema(config)),
validateChangePasswordBody: (config) => validateYupSchema(changePasswordSchema(config)),
};