3 manieren om toegang te beperken in Drupal 7

Door Thomas KrooshofBijgewerkt op 4 januari 2024 0 Reacties

Wat als de Kerstman een website zou hebben waar verlanglijstjes worden bijgehouden door de elfen? Zo'n website zou verschillende vormen van toegangsrechten moeten hebben. De elfen van de speelgoedafdeling mogen de verlanglijstjes bijvoorbeeld alleen bekijken, terwijl de administratieve afdeling ze ook kan bewerken. Misschien zijn de adresgegevens die bij een verlanglijstje horen om privacy redenen wel alleen zichtbaar voor de elfen die verantwoordelijk zijn voor de distributie.

En wat te denken van een speciaal ethisch comité dat vergaderd over opvallende verlanglijstjes, bijvoorbeeld doordat deze onredelijk uitgebreid zijn. Dit comité zou alleen toegang mogen hebben tot verlanglijstjes die getagged zijn als “probleemgeval”. Mochten zij er ook niet uitkomen dan zou er eigenlijk de optie moeten zijn om het lijstje door te sturen naar de Kerstman of één van zijn helpers.

Zou de Kerstman een Drupal 7 website hebben dan zijn scenario’s als hierboven beschreven prima op te lossen met de hieronder behandelde modules, die toegang vanuit verschillende hoeken benaderen.

1. Nodes binnen een content type zichtbaar maken op basis van een rol of gebruiker

De meest populaire module om een toegang tot content te beheren is Content Acces. Deze module is vooral sterk wanneer je toegang binnen een content type wilt verbinden aan een rol of gebruiker. Hiermee zou je dus kunnen bepalen dat elfen met de rol administratie alle verlanglijstjes mogen bewerken, en andere rollen ze alleen mogen bekijken. Per individuele node kun je deze instellingen overrulen. Dit maakt dat de administratie “probleemgevallen” nog even onzichtbaar kan houden voor de werkers maar ook dat het ethisch comité een bepaald verlanglijstje aan een individuele Kerstman kan voorleggen. Voor het kunnen selecteren van individuele gebruikers is wel eerst de Access Control Lists API nodig.

Als je niet wilt dat de leden van het comité dezelfde rechten hebben als de administratie op het gebied van toegang dan komt Node Acces om de hoek kijken. Hiermee kun je ten eerste beheren welke gebruikers de mogelijkheid hebben om andere gebruikers toegang tot een node te geven en ten tweede ook specificeren uit welke gebruikers of rollen hierbij gekozen kan worden, in dit geval alleen de (hulp) Kerstman.

2. Node zichtbaar maken op basis van taxonomie

Hiervoor maak je allereerst de taxonomie term “probleemgeval” aan. Plak daarna aan het content type “verlanglijstje” een Term Reference veld zodat elk verlanglijstje als probleemgeval kan worden gemarkeerd. Als dit is gebeurd installeer je Taxonomy Acces Control, waarmee je kunt bepalen welke gebruikersrol toegang heeft tot berichten met een bepaalde taxonomie term.

Het voordeel van Taxonomy Acces Control ten opzichte van Content Acces is dat je makkelijker buiten de paden van content types kunt treden. Want misschien zijn er wel andere zaken dan verlanglijstjes waarover het comité zich moet buigen, zoals een persbericht dat eerst goedgekeurd moet worden.

Je kunt de Content Acces module zo instellen dat andere toegang modules zoals Taxonomy Acces Control een hogere prioriteit hebben, of andersom.

3. Een veld zichtbaar maken op basis van een rol of gebruiker

Het afleveradres verbergen voor iedereen behalve de elfen van de logistiek? Dit soort zaken regel je met Field Permissions. Deze module werkt net als de andere modules, alleen in dit geval kun je een specifiek veld verbergen in plaats van de gehele node. De toegang stel je in op het niveau van het content type en is niet per node te overschrijven.

Andere scenario’s

Nog wat andere mogelijke scenario's:

Slot

Er zijn natuurlijk tal van scenario’s te bedenken waarbij de toegang tot content beperkt moet zijn tot één of meerdere personen. Out-of-the-box kun je al behoorlijk veel met Drupal en zeker met de in dit artikel behandelde modules lukt het je negen van de tien keer om het gewenste resultaat te behalen, eventueel in combinatie met de Rules en/of Context module. Blijkt dit toch niet voldoende kijk dan eerst op de overzichtpagina van toegangsmodules op Drupal.org. Snel uitproberen van een module kan via Simplytest.me.

Meer inzichten over Drupal