
Язык 🇺🇦 Русский (Украина)
Общие сведения
Реализация
Что такое контроль доступа? 
С помощью FastComments SSO Access Control, иногда называемого RBAC, пользователям можно ограничить доступ только к определённым страницам или веткам комментариев. Кроме того,
пользователи могут @mention друг друга только в пределах одной группы.
Подробнее
Мы можем помещать Users и при необходимости Pages в группы.
Когда Users размещаются в группах, и в настройках виджета включена опция Limit Comments by SSO User Groups, то пользователи
будут видеть только комментарии пользователей из своих групп и смогут @mention только пользователей из тех же групп.
Кроме того, Pages можно поместить в группы, и тогда пользователи смогут получать доступ только к комментариям для страниц, к которым у них есть доступ.
Мы называем это "User-Level" группы в отличие от "Page-Level" групп.
Итак, какой вариант вам подходит?
Используйте группы уровня пользователя, если...
- Вы хотите использовать одно и то же значение
urlId(URL страницы, или ID статьи), но ограничивать комментарии по группам. - Например, вы хотите иметь группы "New User" и "Veteran User", и они никогда не должны видеть комментарии друг друга на одних и тех же страницах.
Используйте группы уровня страницы, если...
- У ваших групп есть конкретные страницы.
- Например, пользователи из группы "Public Pages" никогда не должны просматривать статьи из "Top Secret".
Как это работает 
Контроль доступа FastComments работает путём назначения Pages и Users в требуемые группы.
Группа — это просто строковый идентификатор, например GREEN или abc-123.
Users и Pages не ограничены одной группой. Они ограничены 100 и 1000 группами соответственно.
Доступ к неавторизованным страницам
Если пользователь пытается получить доступ к странице, к которой у него нет доступа, он увидит сообщение об ошибке, как показано ниже:
Текст сообщения можно настроить.
Спецификация 
Визначення того, як кілька користувачів взаємодіють, і тестування цього — складне завдання. Ось специфікація, якої ми дотримуємося для контролю доступу, яку ви можете використовувати для тестування вашої реалізації:
Сторінка with null group ids, користувач with null group ids - має мати доступ.
Сторінка with null group ids, користувач with group ids - має мати доступ.
Сторінка with group ids, користувач with null group ids - має мати доступ.
Сторінка with group ids, користувач with empty list - НЕ має мати доступ.
Сторінка with group ids, користувач with group ids - перетин існує - має мати доступ.
Сторінка with group ids, користувач with group ids - перетин не існує - НЕ має мати доступ.
Сторінка with empty list of group ids (ніхто не має доступу), користувач with null - НЕ має мати доступ.
SSO User A = group ids не визначені (null = повний доступ).
SSO User B = group ids не визначені (null = повний доступ).
A може @B.
SSO User A = group ids не визначені (null = повний доступ).
SSO User B = group ids визначені.
A може @B.
SSO User A = group ids визначені.
SSO User B = group ids не визначені (null = повний доступ).
A може @B.
SSO User A = Group ids = [a].
SSO User B = Group ids = [b].
A НЕ може @B.
SSO User A = Group ids = [a].
SSO User B = Group ids = [a, b].
A може @B.Реализация 
Упоминание пользователей в других группах
Если два пользователя принадлежат двум разным наборам групп, и пересечений нет, они не смогут @mention друг друга.
Если пользователь вручную введет @mention и отправит свой комментарий, оно останется простым текстом. Другой пользователь не будет отмечен.
Управление группами
Groups определяются с помощью API-ресурсов Pages и SSOUsers соответственно.
API Pages можно вызвать, чтобы определить набор групп, которым разрешен доступ к странице. По умолчанию доступ имеют все группы, а также пользователи, которые не принадлежат ни к одной группе.
Аналогично, API SSOUsers можно вызвать, чтобы определить группы, связанные с каждым пользователем.
Для обоих ресурсов нет ограничений относительно того, когда группы могут быть установлены или обновлены.
Если требуется лишь ограничить возможность пользователей @mention друг друга, то Pages можно не учитывать.
Примечание!
Определение и обновление групп пользователей SSO не требует использования API и может выполняться автоматически путем указания group ids в SSO payload, передаваемом виджету комментариев. Однако для больших списков групп это не рекомендуется, так как пользователю придется отправлять этот payload при каждой загрузке страницы.
Примеры вызовов API 
Здесь мы пройдемся по вызову API FastComments для настройки контроля доступа.
Прежде чем начать, обратите внимание, что нам не нужно явно создавать структуру Group. Группы — это просто идентификаторы
добавляемые к Users и Pages. Добавление группы к пользователю или странице автоматически "создает" группу.
Сначала создадим двух пользователей, User A и User B, поместим их в Group X:


Теперь создадим Page. Назовем её Confidential Page, и пока ни у кого из этих пользователей не будет к ней доступа, так как она будет
в группе CONFIDENTIAL:

Пользователи A и B в настоящее время НЕ имеют доступа к новой странице. Однако, поскольку они находятся в одной группе, GROUP-X, они могут @mention друг друга.
Обновим User B, чтобы он теперь имел доступ к странице:

User B теперь принадлежит обеим группам. Наши пользователи по-прежнему могут @mention друг друга, но только User B может просматривать нашу конфиденциальную страницу.
Сделаем так, чтобы User B мог просматривать только конфиденциальную страницу:

Теперь он может просматривать конфиденциальную страницу, но ни один из наших пользователей не может @mention другого, так как они находятся в разных группах.
Однако любой пользователь, который не является частью контроля доступа, сможет получить доступ к нашей странице. Чтобы предотвратить это, убедитесь, что у SSO-пользователей нет значения groupIds, установленного в null. Например, создадим User C, который имеет доступ ко всему:

Установив groupIds в null, мы говорим, что они не ограничены контролем доступа.
Теперь создадим страницу, к которой у всех будет доступ:

Установив accessibleByGroupIds в null, мы говорим, что эта Page не контролируется через контроль доступа, и оба пользователя могут получить к ней доступ.
На этом завершается наш обзор использования API для контроля доступа.