FastComments.com

Что такое контроль доступа? Internal Link


С помощью FastComments SSO Access Control, иногда называемого RBAC, доступ пользователей можно ограничивать только определёнными страницами или ветками комментариев. Кроме того, пользователи могут @mention друг друга только в одной и той же группе.

Подробно

Мы можем помещать Users и опционально Pages в группы.

Когда Users помещены в группы, и Limit Comments by SSO User Groups включено в настройках виджета, тогда пользователи будут видеть только комментарии от пользователей из их же групп и смогут @mention только пользователей из тех же групп.

Кроме того, Pages можно помещать в группы, и тогда пользователи смогут получать доступ только к комментариям на страницах, к которым они имеют доступ.

Мы называем это группами уровня пользователя и группами уровня страницы.

Так какой из них подходит вам?

Используйте группы уровня пользователя, если...

  • Вы хотите использовать одно и то же значение urlId (URL страницы или идентификатор статьи), но ограничить комментарии по группам.
  • Например, вы хотите иметь группы «Новый пользователь» и «Ветеран», и они никогда не должны видеть комментарии друг друга на одних и тех же страницах.

Используйте группы уровня страницы, если...

  • Ваши группы привязаны к определённым страницам.
  • Например, пользователи в группе «Публичные страницы» никогда не должны просматривать статьи из раздела «Совершенно секретно».

Как это работает Internal Link

FastComments Access Control работает путем назначения Pages и Users в нужные группы.

Группа — это просто строковый идентификатор, например GREEN или abc-123.

Users и Pages не ограничены одной группой. Они ограничены 100 и 1000 группами соответственно.

Доступ к неавторизованным страницам

Если пользователь пытается получить доступ к странице, к которой у него нет прав, он увидит сообщение об ошибке, подобное приведенному ниже:

Пример отказа в авторизации
Пример отказа в авторизации

Текст сообщения может быть настроен.

Спецификация Internal Link


Определять, как несколько пользователей взаимодействуют, и тестировать это — сложно. Ниже приведена спецификация, которой мы следуем для контроля доступа, которую вы можете использовать для тестирования вашей реализации:

Страница с null идентификаторами групп, пользователь с null идентификаторами групп - должен иметь доступ.
Страница с null идентификаторами групп, пользователь с идентификаторами групп - должен иметь доступ.
Страница с идентификаторами групп, пользователь с null идентификаторами групп - должен иметь доступ.
Страница с идентификаторами групп, пользователь с пустым списком - НЕ должен иметь доступ.
Страница с идентификаторами групп, пользователь с идентификаторами групп - существует пересечение - должен иметь доступ.
Страница с идентификаторами групп, пользователь с идентификаторами групп - пересечения не существует - НЕ должен иметь доступ.
Страница с пустым списком идентификаторов групп (никому не разрешён доступ), пользователь с null - НЕ должен иметь доступ.

SSO User A = идентификаторы групп не заданы (null = полный доступ).
SSO User B = идентификаторы групп не заданы (null = полный доступ).
A может @B.

SSO User A = идентификаторы групп не заданы (null = полный доступ).
SSO User B = идентификаторы групп заданы.
A может @B.

SSO User A = идентификаторы групп заданы.
SSO User B = идентификаторы групп не заданы (null = полный доступ).
A может @B.

SSO User A = идентификаторы групп = [a].
SSO User B = идентификаторы групп = [b].
A НЕ может @B.

SSO User A = идентификаторы групп = [a].
SSO User B = идентификаторы групп = [a, b].
A может @B.

Реализация Internal Link

Упоминание пользователей из других групп

Если два пользователя принадлежат к двум разным наборам групп, и у них нет пересечения, они не смогут @mention друг друга.

Если пользователь вручную вводит @mention и отправляет свой комментарий, оно останется обычным текстом. Другой пользователь не будет помечен.

Управление группами

Groups определяются с помощью API-ресурсов Pages и SSOUsers, соответственно.

К API Pages можно обращаться, чтобы определить набор групп, которым разрешён доступ к странице. По умолчанию доступ имеют все группы, а также пользователи, которые не принадлежат ни к одной группе.

Аналогично, к API SSOUsers можно обращаться, чтобы определить группы, связанные с каждым пользователем.

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

Если требуется только ограничить возможность @mention пользователей друг друга, то Pages можно не учитывать.

Примечание!

Определение и обновление групп пользователей SSO не требует использования API и может выполняться автоматически путём определения group ids в SSO payload, передаваемом виджету комментариев. Однако для больших списков групп это не рекомендуется, так как пользователю придётся отправлять этот payload при каждой загрузке страницы.