
Idioma 🇧🇷 Português (Brasil)
Contexto
Implementação
Controle de Acesso SSO
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 de grupos diferentes, e não há interseção entre eles, não poderão se @mencionar mutuamente.
Se um usuário digita manualmente uma @menção e envia seu comentário, ela permanecerá como texto simples. O outro usuário não será marcado.
Mantendo os Grupos
Os Groups são definidos usando os recursos de API Pages e SSOUsers, respectivamente.
A API Pages pode ser invocada para definir o conjunto de grupos com permissão para acessar a página. Por padrão, todos os grupos, e usuários que não pertencem a um grupo, têm acesso.
Da mesma forma, a API SSOUsers pode ser invocada para definir os grupos associados a cada usuário.
Para ambos os recursos, não há limitações quanto a quando os grupos podem ser definidos ou atualizados.
Se o objetivo for apenas limitar que os usuários se @mencionem mutuamente, então não é necessário levar os Pages em consideração.
Nota!
Definir e atualizar os grupos de usuários SSO não requer o uso da API, e pode ser feito automaticamente definindo os ids dos grupos 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 percorrer a chamada da API do FastComments para configurar o controle de acesso.
Antes de começar, note que não precisamos criar explicitamente uma estrutura de Group. Os grupos são simplesmente identificadores
adicionados a Users e Pages. Adicionar um grupo a um usuário ou página "cria" o grupo automaticamente.
Primeiro, vamos criar dois usuários, User A e User B, começando ambos em Group X:


Agora vamos criar uma Page. Vamos chamá-la de nossa Confidential Page, e até agora nenhum desses usuários terá acesso a ela, pois ela estará
no grupo CONFIDENTIAL:

Os usuários A e B atualmente NÃO têm acesso à nova página. No entanto, como estão no mesmo grupo, GROUP-X, eles podem se @mencionar mutuamente.
Vamos atualizar o User B para que ele agora possa acessar a página:

O User B agora pertence a ambos os grupos. Nossos usuários ainda podem se @mencionar mutuamente, mas apenas o User B pode visualizar nossa página confidencial.
Vamos fazer com que o User B possa apenas visualizar a página confidencial:

Agora ele pode visualizar a página confidencial, mas nenhum dos nossos usuários pode se @mencionar mutuamente, pois estão em grupos diferentes.
No entanto, qualquer usuário que não faça parte do controle de acesso poderá acessar nossa página. Para evitar isso, garanta que nenhum SSO User tenha
seu groupIds definido como null. Por exemplo, vamos criar o User C, que tem acesso a tudo:

Ao definir groupIds como null, dizemos que ele não é limitado pelo controle de acesso.
Agora, vamos criar uma página que todos têm acesso:

Ao definir accessibleByGroupIds como null, dizemos que esta Page não é controlada pelo controle de acesso, e ambos os usuários podem acessá-la.
Isso conclui nosso passo a passo da API para o Controle de Acesso.