
Idioma 🇧🇷 Português (Brasil)
Contexto
Implementação
O que é Controle de Acesso? 
Com o Controle de Acesso SSO do FastComments, às vezes chamado de RBAC, usuários podem ser restritos a acessar apenas certas páginas ou threads de comentários. Além disso, os usuários só podem @mention uns aos outros no mesmo grupo.
Em Detalhe
Podemos colocar Users e, opcionalmente, Pages em grupos.
Quando Users são colocados em grupos, e Limit Comments by SSO User Groups está ativado em Configurações do Widget, então os usuários
verão apenas comentários de usuários em seus mesmos grupos e só poderão @mention usuários nos mesmos grupos.
Além disso, Pages podem ser colocadas em grupos, e então os usuários só poderão acessar comentários de páginas às quais eles têm acesso.
Chamamos isso de grupos "User-Level" versus grupos "Page-Level".
Então, qual é o certo para você?
Use Grupos no nível do usuário se...
- Você quer usar o mesmo
urlId(URL da página ou ID do artigo), mas restringir comentários por grupo. - Por exemplo, você quer ter grupos "Novo Usuário" e "Usuário Veterano", e eles nunca devem ver os comentários uns dos outros nas mesmas páginas.
Use Grupos no nível da página se...
- Seus grupos têm páginas específicas.
- Por exemplo, usuários no grupo "Páginas Públicas" nunca devem ver artigos "Top Secret".
Como Funciona 
FastComments Controle de Acesso funciona atribuindo Pages e Users aos grupos desejados.
Um grupo é simplesmente um identificador de string, como GREEN ou abc-123.
Users e Pages não estão limitados a um único grupo. Eles são limitados a 100 e 1000 grupos, respectivamente.
Acesso a Páginas Não Autorizadas
Se um usuário tentar acessar uma página à qual não tem acesso, verá uma mensagem de erro, como abaixo:
O texto da mensagem pode ser personalizado.
A Especificação 
Definir como vários usuários interagem e testá-lo é complicado. Aqui está a especificação que seguimos para controle de acesso, que você pode usar para testar sua implementação:
Página com IDs de grupo null, usuário com IDs de grupo null - deve ter acesso.
Página com IDs de grupo null, usuário com IDs de grupo definidos - deve ter acesso.
Página com IDs de grupo, usuário com IDs de grupo null - deve ter acesso.
Página com IDs de grupo, usuário com lista vazia - NÃO deve ter acesso.
Página com IDs de grupo, usuário com IDs de grupo - interseção existe - deve ter acesso.
Página com IDs de grupo, usuário com IDs de grupo - interseção não existe - NÃO deve ter acesso.
Página com lista vazia de IDs de grupo (ninguém tem acesso), usuário com null - NÃO deve ter acesso.
SSO User A = Nenhum ID de grupo definido (null = acesso total).
SSO User B = Nenhum ID de grupo definido (null = acesso total).
A pode @B.
SSO User A = Nenhum ID de grupo definido (null = acesso total).
SSO User B = IDs de grupo definidos.
A pode @B.
SSO User A = IDs de grupo definidos.
SSO User B = Nenhum ID de grupo definido (null = acesso total).
A pode @B.
SSO User A = IDs de grupo = [a].
SSO User B = IDs de grupo = [b].
A NÃO pode @B.
SSO User A = IDs de grupo = [a].
SSO User B = IDs de grupo = [a, b].
A pode @B.
Implementação 
Mencionando Usuários em Outros Grupos
Se dois usuários pertencem a dois conjuntos diferentes de grupos, e não há interseção, eles não poderão @mention um ao outro.
Se um usuário digitar manualmente um @mention e enviar seu comentário, ele permanecerá como texto simples. O outro usuário não será marcado.
Maintaining the Groups
Groups are defined using the Pages and SSOUsers API resources, respectively.
The Pages API can be invoked to define the set of groups allowed to access the page. By default, all groups, and users that do
not belong to a group, have access.
Similarly, the SSOUsers API can be invoked to define the groups associated with each user.
For both resources, there are no limitations as to when the groups can be set or updated.
If it's only desired to limit users from @mention'ing each other, then Pages do not have to be taken into consideration.
Observação!
Definir e atualizar os grupos de usuários SSO não requer o uso da API, e pode ser atualizado automaticamente ao definir o group ids no payload SSO passado para o widget de comentários. No entanto, para listas grandes de grupos, isso não é recomendado, pois o usuário teria que enviar esse payload a cada carregamento de página.
Exemplos de Chamadas de API 
Aqui vamos explicar como chamar a API do FastComments para configurar o controle de acesso.
Antes de começarmos, observe que não precisamos criar explicitamente uma estrutura Group. Groups são simplesmente identificadores
adicionados a Users e Pages. Adicionar um group a um user ou page automaticamente "cria" o group.
First, let's create two users, User A and User B, we'll start them out in Group X:


Now let's create a Page. We'll call it our Confidential Page, and so far none of these users will have access to it as it will
be in the group CONFIDENTIAL:

Users A and B currently DO NOT have access to the new page. However, since they are in the same group, GROUP-X, they can @mention each other.
Let's update User B so they can now access the page:

User B now belongs to both groups. Our users can still @mention each other, but only User B can view our confidential page.
Let's make it so User B can only view the confidential page:

Now they can view the confidential page, but neither of our users can @mention each other, as they are in different groups.
However, any user that is not part of access control will be able to access our page. To prevent this, ensure no SSO Users have
their groupIds set to null. For example, let's create User C, which has access to everything:

By setting groupIds to null, we say they are not limited by access control.
Now, let's create a page that everyone has access to:

By setting accessibleByGroupIds to null, we say this Page is not controlled via access control, and both users can access it.
This completes our API walk-through for Access Control.