Shashika Virajh
Shashika Virajh

Reputation: 9477

Confirm password cannot be set as required with JOI

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??

Upvotes: 3

Views: 4110

Answers (2)

adjoke
adjoke

Reputation: 149

For future reference

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

Upvotes: 8

Pushprajsinh Chudasama
Pushprajsinh Chudasama

Reputation: 7949

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

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

Upvotes: 0

Related Questions