|
|
|
import * as yup from 'yup';
|
|
|
|
|
|
|
|
import buildYupDynamicObject from '../../lib/buildYupDynamicObject';
|
|
|
|
import { yupLaxUuid } from '../../lib/yupMatches';
|
|
|
|
|
|
|
|
const mailServerSchema = yup.object({
|
|
|
|
address: yup.string().required(),
|
|
|
|
authentication: yup.string().oneOf(['none', 'plain-text', 'encrypted']),
|
|
|
|
confirmPassword: yup
|
|
|
|
.string()
|
|
|
|
.when('password', (password, field) =>
|
|
|
|
String(password).length > 0
|
|
|
|
? field.required().oneOf([yup.ref('password')])
|
|
|
|
: field.optional(),
|
|
|
|
),
|
|
|
|
heloDomain: yup.string().required(),
|
|
|
|
password: yup.string().optional(),
|
|
|
|
port: yup.number().required(),
|
|
|
|
security: yup.string().oneOf(['none', 'starttls', 'tls-ssl']),
|
|
|
|
username: yup.string().optional(),
|
|
|
|
uuid: yupLaxUuid().required(),
|
|
|
|
});
|
|
|
|
|
|
|
|
const mailServerListSchema = yup.lazy((mailServers) =>
|
|
|
|
yup.object(buildYupDynamicObject(mailServers, mailServerSchema)),
|
|
|
|
);
|
|
|
|
|
|
|
|
export default mailServerListSchema;
|