Особенности Public Site

Всем привет! Хотелось бы поведать вам об интересной возможности в 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. На каждом сайте автоматически создается специальный пользователь с типом пользователя для операций, выполняемых на сайте, который называется гостевым типом пользователя. Он имеет такие особенности:

  1. У гостевых пользователей нет пароля, роли и доступа API к своему профилю.
  2. Вы не можете войти в систему или выполнить вызов API на стороне клиента (только в пределах Apex кода).
  3. Нет сеанса для гостевого просмотра.
  4. Каждый гостевой пользователь (сайт) имеет уникальный Profile (настройки публичного доступа)
  5. Гостевые лицензии нельзя использовать для каких-либо целей, кроме сайтов Force.сom.
  6. Гостевые пользователи не могут иметь права на обновление или удаление объектов.
  7. Гостевые пользователи не могут получить доступ к записям через ручной доступ.
  8. Гостевые пользователи могут получить доступ к записям только на основе правил общего доступа для гостевых пользователей.

Хотелось бы подробнее остановится на особенности, связанной с изменением существующих данных. Через гостевой профиль мы не можем изменять их напрямую через Apex код, но имеется возможность делать это используя функционал Salesforce для операций с записями, как Flow или Rest API.

Что касается Flow, то суть обхода ограничения состоит в вызове через контроллер заранее созданного flow, который принимает входящие параметры и уже сам выполняет создание/обновление/удаление записи от лица пользователя имеющего для этого права. Данный способ является простым в реализации, потому что минимизирует написание кода и может в дальнейшем поддерживаться на уровне организации для настройки валидации, но из-за особенностей вызова Flow и принципов его работы в случаях, требующих операций с больше чем с одной записью за раз, данный метод не целесообразен для использования.

В случаях когда нужно оперировать определенным количеством данных для обхода ограничений безопасности хорошо использовать вызов Rest API из Apex кода контроллера. Имеет смысл создать группу сервисных классов для этого и в последующем вызывать необходимые методы.

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