account.validator.js 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. // ./api/accounts/account.validator.js
  2. import Joi from "@hapi/joi";
  3. import AccountService from "./account.service.js";
  4. class AccountValidator {
  5. async onSignup(obj) {
  6. const subdomainExists = await AccountService.oneBy({
  7. subdomain: obj.subdomain,
  8. });
  9. const schemaKeys = {
  10. privacyAccepted: Joi.boolean().required(),
  11. marketingAccepted: Joi.boolean().optional(),
  12. };
  13. if (subdomainExists) {
  14. schemaKeys.subdomain = Joi.string().invalid(obj.subdomain).required();
  15. } else {
  16. schemaKeys.subdomain = Joi.string().required();
  17. }
  18. const schema = Joi.object().keys(schemaKeys);
  19. const { error } = schema.validate(obj, { abortEarly: false });
  20. return error;
  21. }
  22. async onUpdate(obj) {
  23. const schemaKeys = {
  24. companyName: Joi.string(),
  25. companyVat: Joi.string(),
  26. companyBillingAddress: Joi.string(),
  27. companySdi: Joi.string().allow("").optional(),
  28. companyPhone: Joi.string(),
  29. companyEmail: Joi.string(),
  30. companyCountry: Joi.string(),
  31. companyPec: Joi.string(),
  32. marketingAccepted: Joi.boolean().optional(),
  33. };
  34. const schema = Joi.object().keys(schemaKeys);
  35. const { error } = schema.validate(obj, { abortEarly: false });
  36. return error;
  37. }
  38. }
  39. export default new AccountValidator();