
Taal 🇳🇱 Nederlands
Achtergrond
Implementatie
Wat is toegangscontrole? 
Met FastComments SSO-toegangscontrole, soms aangeduid als RBAC, kunnen gebruikers beperkt worden tot alleen toegang tot bepaalde pagina's of reactiedraden. Daarnaast,
kunnen gebruikers elkaar alleen @mentionen binnen dezelfde groep.
In detail
We kunnen Users en optioneel Pages in groepen plaatsen.
Wanneer Users in groepen worden geplaatst, en Limit Comments by SSO User Groups is ingeschakeld in Widget Settings, zullen gebruikers
alleen reacties zien van gebruikers in hun eigen groepen en zullen ze alleen in staat zijn om @mention gebruikers in dezelfde groepen.
Daarnaast kunnen Pages in groepen worden geplaatst, en dan kunnen gebruikers alleen toegang krijgen tot reacties voor pagina's waarvoor ze toegang hebben.
We noemen dit "User-Level" groepen versus "Page-Level" groepen.
Dus welke is geschikt voor jou?
Gebruik User-Level-groepen als...
- Je wilt dezelfde
urlIdwaarde (pagina-URL of artikel-ID) gebruiken, maar reacties per groep beperken. - Bijvoorbeeld, je wilt groepen "New User" en "Veteran User" hebben, en ze mogen elkaars reacties op dezelfde pagina's nooit zien.
Gebruik Page-Level-groepen als...
- Je groepen hebben specifieke pagina's.
- Bijvoorbeeld, gebruikers in de groep "Public Pages" mogen nooit artikelen bekijken op de "Top Secret"-pagina's.
Hoe het werkt 
FastComments Access Control werkt door Pages en Users aan de gewenste groepen toe te wijzen.
Een groep is simpelweg een string-identificator, zoals GREEN of abc-123.
Users en Pages zijn niet beperkt tot slechts één groep. Ze zijn respectievelijk beperkt tot 100 en 1000 groepen.
Toegang tot niet-geautoriseerde pagina's
Als een gebruiker probeert toegang te krijgen tot een pagina waarvoor hij/zij geen toegang heeft, ziet hij/zij een foutmelding zoals hieronder:
De berichttekst kan worden aangepast.
De specificatie 
Het definiëren van hoe meerdere gebruikers met elkaar omgaan, en het testen daarvan, is gecompliceerd. Hier is de volgende specificatie die wij hanteren voor toegangscontrole, die je kunt gebruiken om je implementatie te testen:
Pagina met null group ids, gebruiker met null group ids - moet toegang hebben.
Pagina met null group ids, gebruiker met group ids - moet toegang hebben.
Pagina met group ids, gebruiker met null group ids - moet toegang hebben.
Pagina met group ids, gebruiker met empty list - moet GEEN toegang hebben.
Pagina met group ids, gebruiker met group ids - intersection exists - moet toegang hebben.
Pagina met group ids, gebruiker met group ids - intersection does not exist - moet GEEN toegang hebben.
Pagina met empty list of group ids (niemand heeft toegang), gebruiker met null - moet GEEN toegang hebben.
SSO User A = Geen group ids gedefinieerd (null = volledige toegang).
SSO User B = Geen group ids gedefinieerd (null = volledige toegang).
A kan @B.
SSO User A = Geen group ids gedefinieerd (null = volledige toegang).
SSO User B = Group ids gedefinieerd.
A kan @B.
SSO User A = Group ids gedefinieerd.
SSO User B = Geen group ids gedefinieerd (null = volledige toegang).
A kan @B.
SSO User A = Group ids = [a].
SSO User B = Group ids = [b].
A kan NIET @B.
SSO User A = Group ids = [a].
SSO User B = Group ids = [a, b].
A kan @B.Implementatie 
Het noemen van gebruikers in andere groepen
Als twee gebruikers tot twee verschillende sets groepen behoren en er geen overlap is, kunnen ze elkaar niet @mentionen.
Als een gebruiker handmatig een @mention typt en zijn commentaar indient, blijft dit als platte tekst. De andere gebruiker wordt niet getagd.
Het beheren van de groepen
Groups worden gedefinieerd met behulp van de API-resources Pages en SSOUsers, respectievelijk.
De Pages API kan worden aangeroepen om de set groepen te definiëren die toegang tot de pagina hebben. Standaard hebben alle groepen, en gebruikers die tot geen groep behoren, toegang.
Op dezelfde manier kan de SSOUsers API worden aangeroepen om de groepen te definiëren die aan elke gebruiker zijn gekoppeld.
Voor beide resources zijn er geen beperkingen met betrekking tot wanneer de groepen kunnen worden ingesteld of bijgewerkt.
Als het alleen de bedoeling is te voorkomen dat gebruikers elkaar @mention'en, hoeven Pages niet in overweging te worden genomen.
Opmerking!
Het definiëren en bijwerken van de SSO-gebruikersgroepen vereist niet het gebruik van de API en kan in plaats daarvan automatisch worden bijgewerkt door de groep-id's in de SSO-payload op te nemen die naar de commentaar-widget wordt gestuurd. Voor grote lijsten met groepen wordt dit echter niet aanbevolen, omdat de gebruiker deze payload bij elke paginalading zou moeten indienen.
Voorbeeld-API-aanroepen 
Hier lopen we door het aanroepen van de FastComments API om toegangscontrole in te stellen.
Voordat we beginnen: houd er rekening mee dat we niet expliciet een Group-structuur hoeven aan te maken. Groepen zijn gewoon identificatoren
toegevoegd aan Users en Pages. Het toevoegen van een groep aan een gebruiker of pagina "maakt" de groep automatisch aan.
Eerst maken we twee gebruikers aan, User A en User B; we zetten ze aanvankelijk in Group X:


Nu maken we een Page aan. We noemen het onze Confidential Page, en tot nu toe heeft geen van deze gebruikers toegang omdat de pagina in de groep CONFIDENTIAL zal zitten:

Gebruikers A en B hebben op dit moment GEEN toegang tot de nieuwe pagina. Omdat ze echter in dezelfde groep, GROUP-X, zitten, kunnen ze elkaar @mentionen.
Laten we User B bijwerken zodat die nu toegang tot de pagina heeft:

User B behoort nu tot beide groepen. Onze gebruikers kunnen elkaar nog steeds @mentionen, maar alleen User B kan onze vertrouwelijke pagina bekijken.
Laten we ervoor zorgen dat User B alleen de vertrouwelijke pagina kan bekijken:

Nu kan User B de vertrouwelijke pagina bekijken, maar geen van onze gebruikers kan elkaar @mentionen, omdat ze in verschillende groepen zitten.
Echter, elke gebruiker die geen deel uitmaakt van toegangscontrole kan onze pagina wel openen. Om dit te voorkomen, zorg ervoor dat geen SSO-gebruikers hun groupIds op null hebben ingesteld. Bijvoorbeeld: laten we User C aanmaken, die overal toegang toe heeft:

Door groupIds op null te zetten, geven we aan dat ze niet beperkt worden door toegangscontrole.
Laten we nu een pagina aanmaken waartoe iedereen toegang heeft:

Door accessibleByGroupIds op null te zetten, geven we aan dat deze Page niet via toegangscontrole wordt geregeld, en beide gebruikers er toegang toe hebben.
Dit rondt onze API-doorloop voor toegangscontrole af.