Я нахожусь в процессе создания WebApp в Laravel, где зарегистрированные бизнес-пользователи смогут отправлять автоматические электронные письма своим клиентам с помощью всех данных, хранящихся в приложении. Приложение является своего рода CRM. Но для создания собственной электронной почты я хочу дать клиенту возможность написать свой собственный текст и немного логики.
В настоящее время я настроил его так, чтобы только некоторые предопределенные переменные могли использоваться вместе с некоторым HTML. Я анализирую разметку для генерации электронной почты. Как определено ниже.
Проблема, с которой я сталкиваюсь, заключается в том, что если пользователь хочет добавить какую-то логику, скажем, пример:
Если поставщик доставки заказа — FedEx, добавьте сообщение о том, что ссылка отслеживания будет активна после 20:00.
То, что я сейчас использую, Blade, который поставляется по умолчанию в Laravel. Как это даст мне возможность дать гораздо больше гибкости пользователям.
Он отлично работает в среде Dev и решает задачу, но есть проблема.
Единственная проблема заключается в том, что это связано с собственным набором проблем безопасности, поскольку я пытаюсь сохранить несколько шаблонов Blade для каждого пользователя в БД и скомпилировать их во время выполнения, когда сработало событие отправки электронной почты.
Буду признателен, если кто-нибудь подскажет, как сделать добавленный в Blade пользователь более ограниченным, безопасным или совершенно другим вариантом. Так как позволить пользователям добавить логику в приложение, это сложно сделать безопасно.
AFAIK, Blade предназначен для использования разработчиком, поэтому избегайте использования Blade для пользовательского контента. В качестве альтернативы вы можете создать свои собственные предопределенные наборы синтаксиса, доступные пользователю, которые будут заменены реальной командой. Это может поставить некоторые ограничения, но опять же мы не любим смешные дела.
Других решений пока нет …