
Idioma 🇪🇸 Español
Antecedentes
Implementación
¿Qué es el control de acceso? 
Con el Control de Acceso SSO de FastComments, a veces denominado RBAC, los usuarios pueden estar restringidos para acceder únicamente a ciertas páginas o hilos de comentarios. Además, los usuarios solo pueden @mention entre ellos dentro del mismo grupo.
En detalle
Podemos colocar Users y opcionalmente Pages en grupos.
Cuando Users se colocan en grupos, y Limit Comments by SSO User Groups está habilitado en la Configuración del widget, entonces los usuarios solo verán comentarios de usuarios en sus mismos grupos y solo podrán @mention a usuarios en esos mismos grupos.
Además, Pages pueden colocarse en grupos, y entonces los usuarios solo podrán acceder a comentarios de páginas a las que tengan acceso.
Llamamos a esto "grupos a nivel de usuario" frente a "grupos a nivel de página".
Entonces, ¿cuál es el adecuado para usted?
Utilice grupos a nivel de usuario si...
- Desea usar el mismo valor
urlId(URL de la página, o ID del artículo), pero restringir los comentarios por grupo. - Por ejemplo, desea tener los grupos "Usuario nuevo" y "Usuario veterano", y que nunca vean los comentarios del otro en las mismas páginas.
Utilice grupos a nivel de página si...
- Sus grupos tienen páginas específicas.
- Por ejemplo, los usuarios en el grupo "Páginas públicas" nunca deberían ver artículos en los artículos "Top Secret".
Cómo funciona 
El control de acceso de FastComments funciona asignando Pages y Users a los grupos deseados.
Un grupo es simplemente un identificador de cadena, como GREEN o abc-123.
Users y Pages no están limitados a un solo grupo. Están limitados a 100 y 1000 grupos, respectivamente.
Acceso a páginas no autorizadas
Si un usuario intenta acceder a una página a la que no tiene acceso, verá un mensaje de error como el siguiente:
El texto del mensaje se puede personalizar.
La especificación 
Definir cómo interactúan múltiples usuarios y probarlo es complicado. A continuación está la especificación que seguimos para el control de acceso, que puede usar para probar su implementación:
Página con IDs de grupo nulos, usuario con IDs de grupo nulos - debería tener acceso.
Página con IDs de grupo nulos, usuario con IDs de grupo - debería tener acceso.
Página con IDs de grupo, usuario con IDs de grupo nulos - debería tener acceso.
Página con IDs de grupo, usuario con lista vacía - NO debería tener acceso.
Página con IDs de grupo, usuario con IDs de grupo - existe intersección - debería tener acceso.
Página con IDs de grupo, usuario con IDs de grupo - no existe intersección - NO debería tener acceso.
Página con lista vacía de IDs de grupo (nadie tiene acceso), usuario con null - NO debería tener acceso.
SSO User A = No se han definido IDs de grupo (null = acceso total).
SSO User B = No se han definido IDs de grupo (null = acceso total).
A puede @B.
SSO User A = No se han definido IDs de grupo (null = acceso total).
SSO User B = IDs de grupo definidos.
A puede @B.
SSO User A = IDs de grupo definidos.
SSO User B = No se han definido IDs de grupo (null = acceso total).
A puede @B.
SSO User A = IDs de grupo = [a].
SSO User B = IDs de grupo = [b].
A NO puede @B.
SSO User A = IDs de grupo = [a].
SSO User B = IDs de grupo = [a, b].
A puede @B.
Implementación 
Mención de Usuarios en Otros Grupos
Si dos usuarios pertenecen a dos conjuntos diferentes de grupos, y no hay intersección, no podrán @mention entre sí.
Si un usuario escribe manualmente un @mention y envía su comentario, permanecerá como texto sin formato. El otro usuario no será etiquetado.
Mantenimiento de los Grupos
Groups se definen mediante los recursos API Pages y SSOUsers, respectivamente.
La API Pages puede invocarse para definir el conjunto de grupos permitidos para acceder a la página. Por defecto, todos los grupos, y los usuarios que no pertenecen a un grupo, tienen acceso.
De forma similar, la API SSOUsers puede invocarse para definir los grupos asociados a cada usuario.
Para ambos recursos, no hay limitaciones respecto a cuándo se pueden establecer o actualizar los grupos.
Si solo se desea impedir que los usuarios se @mentionen entre sí, entonces no es necesario tener en cuenta Pages.
¡Nota!
Definir y actualizar los grupos de usuarios SSO no requiere usar la API, y en su lugar puede actualizarse automáticamente definiendo los ids de grupo en el payload SSO pasado al widget de comentarios. Sin embargo, para listas grandes de grupos, esto no se recomienda ya que el usuario tendría que enviar este payload en cada carga de página.
Ejemplos de llamadas a la API 
Aquí recorreremos cómo llamar a la API de FastComments para configurar el control de acceso.
Antes de comenzar, tenga en cuenta que no tenemos que crear explícitamente una estructura de Group. Los grupos son simplemente identificadores
agregados a Users y Pages. Agregar un grupo a un usuario o página "crea" automáticamente el grupo.
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.