module {{namespace_module}} module Accounts module Update class Validator include Shogun::Validator include Accounts ID_MATCH = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/ EMAIL_MATCH = /^[^@\s]+@([^@\s]+\.)+[^@\s]+$/ SIGNATURE_RANGE = 2..64 USERNAME_MATCH = /^\S*$/ USERNAME_RANGE = 2..64 def initialize(data:) @verifiers = [ Shogun::Verifier::Presence.new(data: data.id, name: "id"), Shogun::Verifier::Match.new(data: data.id, name: "id", comparison: ID_MATCH), Shogun::Verifier::Presence.new(data: data.session, name: "session") ] if data.name @verifiers << Shogun::Verifier::Presence.new(data: data.name, name: "name") end if data.email @verifiers << Shogun::Verifier::Presence.new(data: data.email, name: "email") @verifiers << Shogun::Verifier::Match.new(data: data.email, name: "email", comparison: EMAIL_MATCH) @verifiers << Shogun::Verifier::Uniqueness.new(data: data.email, name: "email", list: Model.pluck(:email)) end if data.signature @verifiers << Shogun::Verifier::Presence.new(data: data.signature, name: "signature") @verifiers << Shogun::Verifier::Range.new(data: data.signature, name: "signature", range: SIGNATURE_RANGE) @verifiers << Shogun::Verifier::Uniqueness.new(data: data.signature, name: "signature", list: Model.pluck(:signature)) end if data.username @verifiers << Shogun::Verifier::Match.new(data: data.username, name: "username", comparison: USERNAME_MATCH) @verifiers << Shogun::Verifier::Range.new(data: data.username, name: "username", range: USERNAME_RANGE) @verifiers << Shogun::Verifier::Presence.new(data: data.username, name: "username") @verifiers << Shogun::Verifier::Uniqueness.new(data: data.username, name: "username", list: Model.pluck(:username)) end end end end end end