Всем привет! Хотелось бы поведать вам об интересной возможности в Salesforce, а именно о Public Sites. Разберем, что же это вообще такое, как это можно использовать в своих проектах и с какими трудностями, возможно, придется столкнуться.
Публичные сайты Force.сom позволяют пользователям создавать общедоступные веб-сайты с использованием страниц и приложений visualforce, используя платформу Force.сom, которая напрямую интегрируется с salesforce.сom. Сайты Force.сom размещаются и в последствии обслуживаются на серверах Force.сom, поэтому нет проблем с интеграцией данных и отсутствует необходимость в стороннем хостинге. При этом сайты Force.сom создаются с использованием Apex и Visualforce, но могут также включать простую разметку HTML, JavaScript, CSS для создания визуально привлекательного взаимодействия с пользователем.
Мы можем создать сайт Force.сom с нашим собственным доменным именем.
Преимущества использования сайтов Force.com в Salesforce:
-
Создание публичных страниц, к которым может получить доступ любой.
-
Использование Visualforce для создания страниц с ограниченным доступом, которые вы можете добавить в качестве вкладки в своем сообществе.
-
Написание своих собственных контроллеров или расширений для существующих контроллеров, используя код Apex.
-
Создание собственных страниц входа или регистрации.
-
Создание динамических веб-приложений, например приложение для управления Events.
Следующие примеры иллюстрируют несколько примеров использования публичных сайтов:
-
Опубликуйте часто задаваемые вопросы о поддержке. Разместите полезную информацию на общедоступном веб-сайте, где клиенты могут искать решения своих проблем.
-
Создайте инструмент поиска магазинов - добавьте на портал общедоступный инструмент, который поможет покупателям находить магазины в их районе.
-
Создайте веб-сайт для набора персонала. Разместите вакансии на общедоступном сайте и разрешите посетителям подавать заявки.
-
Опубликуйте каталог продуктов. Перечислите все продукты вашей компании на общедоступном веб-сайте с номерами моделей, текущими ценами и изображениями продуктов, динамически полученными из вашей организации.
Важное ограничение общедоступных сайтов основывается на политике безопасности Salesforce. На каждом сайте автоматически создается специальный пользователь с типом пользователя для операций, выполняемых на сайте, который называется гостевым типом пользователя. Он имеет такие особенности:
- У гостевых пользователей нет пароля, роли и доступа API к своему профилю.
- Вы не можете войти в систему или выполнить вызов API на стороне клиента (только в пределах Apex кода).
- Нет сеанса для гостевого просмотра.
- Каждый гостевой пользователь (сайт) имеет уникальный Profile (настройки публичного доступа)
- Гостевые лицензии нельзя использовать для каких-либо целей, кроме сайтов Force.сom.
- Гостевые пользователи не могут иметь права на обновление или удаление объектов.
- Гостевые пользователи не могут получить доступ к записям через ручной доступ.
- Гостевые пользователи могут получить доступ к записям только на основе правил общего доступа для гостевых пользователей.
Хотелось бы подробнее остановится на особенности, связанной с изменением существующих данных. Через гостевой профиль мы не можем изменять их напрямую через Apex код, но имеется возможность делать это используя функционал Salesforce для операций с записями, как Flow или Rest API.
Что касается Flow, то суть обхода ограничения состоит в вызове через контроллер заранее созданного flow, который принимает входящие параметры и уже сам выполняет создание/обновление/удаление записи от лица пользователя имеющего для этого права. Данный способ является простым в реализации, потому что минимизирует написание кода и может в дальнейшем поддерживаться на уровне организации для настройки валидации, но из-за особенностей вызова Flow и принципов его работы в случаях, требующих операций с больше чем с одной записью за раз, данный метод не целесообразен для использования.
В случаях когда нужно оперировать определенным количеством данных для обхода ограничений безопасности хорошо использовать вызов Rest API из Apex кода контроллера. Имеет смысл создать группу сервисных классов для этого и в последующем вызывать необходимые методы.
Подводя итоги хотелось бы сказать что публичные сайты предоставляют удобную возможность создавать небольшие сайты дополняющие инфраструктуру проекта. Ограничения вызванные безопасностью не критичны для подобной сферы использования и при необходимости их можно обойти с помощью существующих в Salesforce инструментов. Интеграция данных и автоматическое размещение на сервере делают публичные сайты отличным вариантов для создания сайтов визиток или сайтов для размещения заявок.