From e6052ad0d8bcdb54b89d40675c55e8a226718105 Mon Sep 17 00:00:00 2001 From: Pete Matsyburka Date: Tue, 23 Jan 2024 21:46:57 +0200 Subject: [PATCH] validate email/phone submission format --- lib/params/base_validator.rb | 8 ++++++++ lib/params/submission_create_validator.rb | 3 +++ 2 files changed, 11 insertions(+) diff --git a/lib/params/base_validator.rb b/lib/params/base_validator.rb index 9cc4adb3..085f4b45 100644 --- a/lib/params/base_validator.rb +++ b/lib/params/base_validator.rb @@ -59,6 +59,14 @@ module Params raise_error(message || "#{key} must be a #{type}") end + def format(params, key, regexp, message: nil) + return if params.blank? + return if params[key].blank? + return if regexp.match?(params[key].to_s) + + raise_error(message || "#{key} must follow the #{regexp.source} format") + end + def in_path(params, path = []) old_path = @current_path diff --git a/lib/params/submission_create_validator.rb b/lib/params/submission_create_validator.rb index 1a329287..43280db9 100644 --- a/lib/params/submission_create_validator.rb +++ b/lib/params/submission_create_validator.rb @@ -60,7 +60,10 @@ module Params type(submitter_params, :name, String) type(submitter_params, :email, String) + format(submitter_params, :email, /@/, message: 'email is invalid') type(submitter_params, :phone, String) + format(submitter_params, :phone, /\A\+\d+\z/, + message: 'phone should start with + and contain only digits') type(submitter_params, :values, Hash) boolean(submitter_params, :send_email) boolean(submitter_params, :send_sms)