Найти тему
Logonok

Проверка данных от пользователей

Оглавление

Одно из главных правил надежного веб-приложения - это проверка данных поступающих от клиента. Нельзя полагаться на то, что входящие значения будут всегда соответствовать прописанному интерфейсу. И если вместо даты рождения приходит фамилия, приложение не должно выбрасывать исключение о недопустимой операции. Правильно будет указать какие данные содержат ошибку.

В декларативном фреймворке Evado само создание приложения происходит через описание его сущностей в веб-интерфейсе. Таким же образом осуществляется и настройка правил валидации - проверок пользовательского ввода.

Чтобы попробовать декларативно разрабатывать приложение можно даже не ставить вручную окружение - Node.js и MongoDB. Достаточно скопировать репозиторий шаблонного приложения и запустить его в Docker - вы сразу получите готовый веб-интерфейс.
Готовый интерфейс фреймворка Evado для создания веб-приложения
Готовый интерфейс фреймворка Evado для создания веб-приложения

Типовые валидаторы

Типовые валидаторы создаются всегда по умолчанию и зависят от типа данных. Например, значение атрибута с типом «Целочисленный» будет проверено на соответствие целому числу.

Встроенные валидаторы

Встроенные валидаторы активируются флажками на форме атрибута и не имеют дополнительных настроек.

Встроенные валидаторы атрибута
Встроенные валидаторы атрибута
  • Обязательно - проверяет наличие данных.
  • Только чтение - игнорирует данные полученные от пользователя.
  • Уникально - проверяет отсутствие совпадений значения среди других объектов класса. Для настройки особых условий проверки можно использовать отдельный валидатор «Уникальность» (см. далее).
По большему счёту, параметр «Только чтение», как и параметр «Обрезать», который отсекает крайние пробелы значения, относится не к валидации, а к фильтрации данных.

Валидаторы атрибута

Валидаторы атрибута находятся на вкладке «Валидаторы». Для ситуаций, когда разные проверки зависят друг от друга, валидаторы упорядочены по порядковым номерам.

Список основных валидаторов атрибута
Список основных валидаторов атрибута
  • Строка - проверяет заданную или минимальную/максимальную длину строки.
  • Число - проверяет данные на целое число (не актуально для целочисленного атрибута) и минимальное/максимальное значение.
  • Дата - проверяет данные на минимальное/максимальное значение. Кроме того, можно указать выражения минимального и максимального значений для динамического вычисления от текущей даты.
  • Регулярное выражение - проверяет данные на соответствие заданному шаблону (regex). Можно инвертировать результат проверки, установив флажок «Несовпадение».
  • Электронная почта - проверяет соответствие строки формату адреса электронной почты.
  • Вычисляемое выражение - проверяет равенство данных результату выражения. Например, ["$+", ".num1", ".num2"] вычисляет сумму значений атрибутов с кодовыми именами num1 и num2. Допустимые выражения можно найти в модулях evad-meta-base/calc.
  • Условие - проверяет заданное выражение на соответствие истине. Например, ["$>", ".num1", ".num2"] проверяет больше ли значение атрибута с кодовым именем num1, чем num2.
  • Счётчик отношения - проверяет ссылочный атрибут на минимальное/максимальное количество связанных объектов. Здесь необходимо учитывать, что связи могут изменяться вне объекта, в котором определен ссылочный атрибут (обратные ссылки).
  • Уникальность - проверяет отсутствие совпадений значений среди других объектов класса. Фильтр позволяет ограничить выборку объектов для сравнений.
  • Пользовательский валидатор - конфигурация экземпляра JavaScript класса, который реализован в отдельном файле. Пример такого валидатора можно посмотреть в демо-приложении фреймворка Evado.
Конфигурация содержит параметры для создания пользовательского валидатора
Конфигурация содержит параметры для создания пользовательского валидатора

Конфигурация создания

Реализации всех валидаторов можно найти в модуле evado-meta-base. Подключить каждый из них можно так же, как и пользовательский валидатор - через описание конфигурации создания. Например, {"Class":"evaso-meta-base/validator/NumberValidator", "min": 12, "max": 24}.

Конфигурации создания - это способ передачи через структуру данных параметров создания объекта.

Class - местоположение JavaScript файла с определением класса. Путь к файлу разрешается либо относительно node_modules, либо корня приложения. Конфигурация передается в конструктор как объект, и её свойства назначаются как свойства экземпляра класса.

Классовые валидаторы

Валидаторы могут быть определены в самом классе и/или представлении. По параметрам они эквиваленты валидаторам атрибута, но в них должны быть указаны атрибуты, к которым они относятся.

Заключение

Готовый пример использования валидации пользовательских данных можно найти в демо-приложении фреймворка Evado и других, доступных в открытом репозитории.

Декларативный фреймворк Evado - cоздавай, наполняй, управляй!
Декларативный фреймворк Evado - cоздавай, наполняй, управляй!