Confirm password cannot be set as required with JOI

Viewed 3243

In my Node application I use @hapi.Joi package for validations. I have the following code.

export function validateUser(user) {
  const schema = Joi.object({
    firstName: Joi.string().min(1).max(20).required(),
    lastName: Joi.string().min(1).max(20).required(),
    email: Joi.string().email().max(50).required(),
    mobile: Joi.string().min(8).max(12).required(),
    password: Joi.string().min(8).max(16).required(),
    confirmPassword: Joi.ref('password'),
  });

  return schema.validate(user);
}

But this doesn't check if the confirmPassword is required. I tried Joi.ref('password').required(). But it gives me an error. How can I solve this??

2 Answers

For future reference

password: Joi.string().required(),    
confirmPassword:Joi.string().required().valid(Joi.ref('password')),

You can use Joi.any().valid() with Joi.ref():

confirmPassword: Joi.any().valid(Joi.ref('password')).required().options({ language: { any: { allowOnly: 'must match password' } } })
Related