mirror of
https://github.com/strapi/strapi.git
synced 2025-07-27 02:44:13 +00:00
68 lines
2.1 KiB
JavaScript
68 lines
2.1 KiB
JavaScript
'use strict';
|
|
|
|
const { yup, validateYupSchemaSync } = require('@strapi/utils');
|
|
const validators = require('./common-validators');
|
|
|
|
const registerProviderActionSchema = yup
|
|
.array()
|
|
.required()
|
|
.of(
|
|
yup
|
|
.object()
|
|
.shape({
|
|
uid: yup
|
|
.string()
|
|
.matches(
|
|
/^[a-z]([a-z|.|-]+)[a-z]$/,
|
|
(v) => `${v.path}: The id can only contain lowercase letters, dots and hyphens.`
|
|
)
|
|
.required(),
|
|
section: yup.string().oneOf(['contentTypes', 'plugins', 'settings']).required(),
|
|
pluginName: yup.mixed().when('section', {
|
|
is: 'plugins',
|
|
then: validators.isAPluginName.required(),
|
|
otherwise: validators.isAPluginName,
|
|
}),
|
|
subjects: yup.mixed().when('section', {
|
|
is: 'contentTypes',
|
|
then: yup.array().of(yup.string()).required(),
|
|
otherwise: yup
|
|
.mixed()
|
|
.oneOf([undefined], 'subjects should only be defined for the "contentTypes" section'),
|
|
}),
|
|
displayName: yup.string().required(),
|
|
category: yup.mixed().when('section', {
|
|
is: 'settings',
|
|
then: yup.string().required(),
|
|
otherwise: yup
|
|
.mixed()
|
|
.test(
|
|
'settingsCategory',
|
|
'category should only be defined for the "settings" section',
|
|
(cat) => cat === undefined
|
|
),
|
|
}),
|
|
subCategory: yup.mixed().when('section', {
|
|
is: (section) => ['settings', 'plugins'].includes(section),
|
|
then: yup.string(),
|
|
otherwise: yup
|
|
.mixed()
|
|
.test(
|
|
'settingsSubCategory',
|
|
'subCategory should only be defined for "plugins" and "settings" sections',
|
|
(subCat) => {
|
|
return subCat === undefined;
|
|
}
|
|
),
|
|
}),
|
|
options: yup.object({
|
|
applyToProperties: yup.array().of(yup.string()),
|
|
}),
|
|
})
|
|
.noUnknown()
|
|
);
|
|
|
|
module.exports = {
|
|
validateRegisterProviderAction: validateYupSchemaSync(registerProviderActionSchema),
|
|
};
|