module FreckleIO::Validator::User

Public Class Methods

validation(params, valid_keys) click to toggle source

rubocop:disable Metrics/MethodLength, rubocop:disable Metrics/AbcSize, rubocop:disable Lint/NestedMethodDefinition

# File lib/freckle_io/validator/user.rb, line 7
def self.validation(params, valid_keys)
  Dry::Validation.Schema do
    configure do
      config.messages_file = File.join(
        __dir__, "validation.yml"
      )
      config.namespace = :user

      predicates(RestrictedHash)

      option :allowed_keys

      def valid_roles
        %w(supervisor leader coworker contractor)
      end

      def valid_states
        %w(disabled pending active suspended)
      end
    end

    restricted_hash?(allowed_keys) do
      optional(:name).filled :str?
      optional(:email).filled :str?
      optional(:email).value(format?: /\A[^@\s]+@[^@\s]+\z/)
      optional(:role).value(included_in?: valid_roles)
      optional(:state).value(included_in?: valid_states)
      optional(:per_page).filled :int?
    end
  end.with(allowed_keys: valid_keys).call(params)
end

Public Instance Methods

valid_roles() click to toggle source
# File lib/freckle_io/validator/user.rb, line 19
def valid_roles
  %w(supervisor leader coworker contractor)
end
valid_states() click to toggle source
# File lib/freckle_io/validator/user.rb, line 23
def valid_states
  %w(disabled pending active suspended)
end