70 lines
1.8 KiB
JavaScript
Raw Normal View History

'use strict';
const { isUndefined } = require('lodash/fp');
2021-11-03 19:31:57 +01:00
const { yup, validateYupSchema } = require('@strapi/utils');
const validators = require('./common-validators');
const userCreationSchema = yup
.object()
.shape({
email: validators.email.required(),
firstname: validators.firstname.required(),
2021-11-10 18:36:07 +01:00
lastname: validators.lastname,
roles: validators.roles.min(1),
2021-02-05 16:35:47 +01:00
preferedLanguage: yup.string().nullable(),
})
.noUnknown();
const profileUpdateSchema = yup
.object()
.shape({
email: validators.email.notNull(),
firstname: validators.firstname.notNull(),
2021-11-10 18:36:07 +01:00
lastname: validators.lastname.nullable(),
2020-05-27 16:06:15 +02:00
username: validators.username.nullable(),
password: validators.password.notNull(),
currentPassword: yup
.string()
.when('password', (password, schema) => (!isUndefined(password) ? schema.required() : schema))
.notNull(),
2021-02-05 16:35:47 +01:00
preferedLanguage: yup.string().nullable(),
})
.noUnknown();
2020-05-27 16:06:15 +02:00
const userUpdateSchema = yup
.object()
.shape({
email: validators.email.notNull(),
firstname: validators.firstname.notNull(),
2021-11-10 18:36:07 +01:00
lastname: validators.lastname.nullable(),
2020-05-27 16:06:15 +02:00
username: validators.username.nullable(),
password: validators.password.notNull(),
isActive: yup.bool().notNull(),
roles: validators.roles.min(1).notNull(),
2020-05-27 16:06:15 +02:00
})
.noUnknown();
const usersDeleteSchema = yup
.object()
.shape({
ids: yup
.array()
.of(yup.strapiID())
.min(1)
.required(),
})
.noUnknown();
module.exports = {
2021-11-03 19:31:57 +01:00
validateUserCreationInput: validateYupSchema(userCreationSchema),
validateProfileUpdateInput: validateYupSchema(profileUpdateSchema),
validateUserUpdateInput: validateYupSchema(userUpdateSchema),
validateUsersDeleteInput: validateYupSchema(usersDeleteSchema),
schemas: {
userCreationSchema,
usersDeleteSchema,
userUpdateSchema,
},
};