Terug naar hoofdinhoud
Gebruikers en gebruikers groepen in Joomla

Gebruikers en gebruikers groepen in Joomla

26 mei 2026

Gebruikers vormen het hart van elke Joomla-website. Zodra je een loginformulier, een ledenomgeving of een backend-editor toevoegt, werk je met het gebruikerssysteem van Joomla.

Dat systeem lijkt aan de buitenkant eenvoudig, maar raakt bijna elk onderdeel van Joomla: zichtbaarheid van artikelen en modules, backendtoegang, redactionele workflows, aangepaste velden, beveiliging en zelfs het gedrag van je extensies.

Wie je bent, wat je mag zien en wat je mag doen.

Dit artikel legt uit hoe Joomla-gebruikers echt werken. Het behandelt de basis voor website-eigenaren, de praktische inrichting voor beheerders en de technische details voor ontwikkelaars. Je leert hoe gebruikersaccounts, gebruikersgroepen, toegangsniveaus en rechten samenhangen, en hoe je de meest voorkomende fouten voorkomt.

Het doel is simpel: je helpen het gebruikerssysteem van Joomla goed genoeg te begrijpen om het met vertrouwen te beheren.

1. De basis

1.1 Waarom gebruikers belangrijk zijn

Zonder goed gebruikersbeheer ziet iedere bezoeker dezelfde website. Je kunt geen beheerderstoegang beperken, geen content beschermen, geen ledenomgeving maken en geen onderscheid maken tussen redacteuren en bezoekers. Beveiligingsproblemen liggen dan al snel op de loer.

Met Joomla's gebruikerssysteem kun je publieke, leden-only en staff-only content naast elkaar gebruiken. Je kunt specifieke taken aan specifieke mensen geven, zelfregistratie en wachtwoordherstel aanbieden, en multi-factor authenticatie inschakelen.

1.2 De drie pijlers

Joomla verdeelt gebruikersbeheer in drie onafhankelijke bouwstenen. Als je deze drie pijlers begrijpt, begrijp je de kern van het hele systeem:

PijlerBeantwoordt de vraagWaar vind je het?
Gebruikersgroepen Wie ben je? Gebruikers → Groepen
Toegangsniveaus Wat mag je zien? Gebruikers → Toegangsniveaus
Rechten (ACL) Wat mag je doen? Algemene instellingen plus elke component, categorie en elk item

De rest van dit artikel gaat over hoe deze drie pijlers samenwerken.

1.3 Waar vind ik gebruikers?

In de Joomla 6-backend beheer je het gebruikerssysteem via het menu Gebruikers:

Gebruikers → Beheren          (alle gebruikersaccounts)
Gebruikers → Groepen          (gebruikersgroepen)
Gebruikers → Toegangsniveaus  (weergavetoegangsniveaus)
Gebruikers → Velden           (aangepaste profielvelden)
Gebruikers → Gebruikersnotities (interne notities per gebruiker)

Rechten staan op een andere plek: het tabblad Rechten in Algemene instellingen, in de opties van elke component, en in categorieën en items.

2. Het gebruikersaccount

2.1 Wat is een Joomla-gebruiker?

Een gebruiker is één account dat kan inloggen op de frontend, de backend of beide. Elke gebruiker is één rij in de databasetabel #__users. Een gebruiker is gekoppeld aan één of meer groepen en kan profielvelden, gebruikersnotities en multi-factor authenticatiemethoden hebben.

Een gebruiker heeft een unieke id, username en email. Een gebruiker zonder groep is technisch geldig, maar kan nergens inloggen.

2.2 Accountvelden

Elk Joomla-gebruikersaccount heeft deze ingebouwde velden:

  • Naam: de weergavenaam, getoond bij artikelen en contactformulieren.
  • Gebruikersnaam: gebruikt om in te loggen, hoofdlettergevoelig in Joomla 6.
  • E-mail: moet uniek zijn binnen de website.
  • Wachtwoord: gehasht met bcrypt, nooit als platte tekst opgeslagen.
  • Registratiedatum / Laatste bezoek / Laatste reset: tijdstempels die Joomla automatisch bijhoudt.
  • Blokkeren: schakelt inloggen uit zonder het account te verwijderen.
  • Systeemmails ontvangen: opt-in voor beheerdersmeldingen.
  • Wachtwoordreset verplichten: dwingt een wachtwoordwijziging af bij de volgende login.

2.3 Een gebruiker aanmaken

Er zijn twee manieren om een gebruiker in Joomla aan te maken:

  • Backend: Gebruikers → Beheren → Nieuw. Een beheerder maakt het account aan, kiest de groep en stelt het wachtwoord in. Een e-mail versturen is optioneel.
  • Frontend: de registratieweergave op /index.php?option=com_users&view=registration. De bezoeker registreert zichzelf en komt standaard in de groep Registered.

De activatiestroom voor zelfregistratie regel je via Algemene instellingen → Gebruikers → Component. Je kunt kiezen voor geen, zelfactivatie of beheerderactivatie.

2.4 Twee manieren om een gebruiker uit te schakelen

OptieWat het doetWanneer gebruiken
Blokkeren Het account blijft bestaan, maar inloggen wordt geweigerd. Tijdelijke schorsing, of een gebruiker die later kan terugkeren.
Verwijderen De gebruikersrij wordt uit de database verwijderd. Account nooit gebruikt, of een AVG-verwijderverzoek.

Een gebruiker verwijderen verwijdert niet zijn of haar content. Artikelen houden created_by op het oude id, dat nu nergens meer naar verwijst. Als auteurschap belangrijk is, wijs de content eerst opnieuw toe en verwijder daarna de gebruiker.

2.5 Gebruikersnotities, de vergeten functie

Onder Gebruikers → Gebruikersnotities kun je interne notities aan elke gebruiker koppelen. Gebruikersnotities zijn:

  • Gecategoriseerd, ja, gebruikersnotities gebruiken ook com_categories.
  • Handig voor supporttickets, lidmaatschapsgeschiedenis en moderatielogs.
  • Onzichtbaar voor de gebruiker zelf.

Veel website-eigenaren ontdekken Gebruikersnotities nooit, maar ze zijn een uitstekende audittrail voor ledensites en klantportalen.

3. Gebruikersgroepen

3.1 Wat is een gebruikersgroep?

Een gebruikersgroep is een gelabelde verzameling gebruikers. De groep zelf bevat nog geen rechten. Rechten worden later aan de groep toegekend via de ACL.

Drie regels om te onthouden:

  • Een gebruiker kan tegelijk tot meerdere groepen behoren.
  • Groepen kunnen genest zijn in een ouder-kindstructuur.
  • Een childgroep erft de rechten van de parentgroep, tenzij je ze overschrijft.

De groep is het belangrijkste ACL-concept. Zet je groepen goed neer, dan valt de rest van het systeem op zijn plek.

3.2 De standaardgroepen in Joomla 6

Standaard levert Joomla deze groepsstructuur mee:

Public
 ├── Guest
 ├── Manager
 │    └── Administrator
 ├── Registered
 │    └── Author
 │         └── Editor
 │              └── Publisher
 └── Super Users

Elke groep heeft een specifieke rol:

  • Public: iedere bezoeker, ingelogd of niet.
  • Guest: expliciet niet ingelogd.
  • Registered: elke ingelogde frontendgebruiker.
  • Author, Editor, Publisher: oplopende contentrechten op de frontend.
  • Manager, Administrator: backendtoegang met oplopende bevoegdheden.
  • Super Users: onbeperkt, kan alles overal.

3.3 Overerving in de praktijk

Een groep erft rechten, geen gebruikers. Dit zorgt vaak voor verwarring. Een voorbeeld:

  • Een gebruiker toevoegen aan Editor voegt die gebruiker niet automatisch toe aan Author.
  • Maar de groep Editor erft de rechten van Author, dus een Editor kan alles wat een Author kan.
  • Als je "Verwijderen" op Geweigerd zet voor Editor, wordt de overerving voor die ene actie doorbroken.

Kort gezegd: overerving loopt naar beneden door de groepsstructuur, maar gebruikerstoewijzingen gelden alleen voor de gekozen groep.

3.4 Een aangepaste groep aanmaken

Ga naar Gebruikers → Groepen → Nieuw. Er zijn maar twee verplichte velden:

VeldDoel
Groepstitel De weergavenaam, bijvoorbeeld Newsroom Editors.
Bovenliggende groep Waar de groep in de boomstructuur komt.

De keuze van de parent bepaalt met welke rechten je begint. Kies de dichtstbijzijnde match, zodat je later minder hoeft te overschrijven.

Veelgebruikte aangepaste groepen in de praktijk:

  • Leden (parent: Registered): betalende leden van een community.
  • Moderators (parent: Editor): forum- of commentmoderatie.
  • Sitebeheerders (parent: Administrator): backendtoegang zonder Super User-rechten.

3.5 Many-to-many in actie

Eén gebruiker kan tegelijk in meerdere groepen zitten. Voorbeeld: Jane is Newsroom Editor voor content en Forum Moderator.

  • Open Gebruikers → Beheren → Jane → Toegewezen gebruikersgroepen.
  • Vink beide groepen aan.
  • Jane krijgt nu de combinatie van de rechten van beide groepen.

Als de ene groep een actie Toestaat en een andere groep niet, wint Toestaan, tenzij een derde groep dezelfde actie expliciet Weigert. De regel "Weigeren wint altijd" maakt deze combinatie veilig.

4. Toegangsniveaus

4.1 Wat is een toegangsniveau?

Een toegangsniveau beantwoordt één vraag: "Welke groepen mogen dit zien?"

Toegangsniveaus vind je onder Gebruikers → Toegangsniveaus. Elk toegangsniveau heeft een titel en een lijst met groepen die toegang krijgen. Het niveau kan vervolgens worden toegewezen aan artikelen, modules, menu-items, categorieën, contacten en bijna elk ander contenttype.

Het verschil tussen groepen en toegangsniveaus is subtiel maar belangrijk:

  • Een groep zegt wie je bent.
  • Een toegangsniveau zegt wie deze content mag zien.

4.2 De standaard toegangsniveaus

Standaard heeft Joomla deze toegangsniveaus:

NiveauToegekend aanTypisch gebruik
Public Public-groep Iedereen, ingelogd of niet.
Guest Guest-groep Alleen zichtbaar voor anonieme bezoekers.
Registered Registered en alle childgroepen Alleen ingelogde leden.
Special Author en hoger Redacteuren, staff en beheerders.
Super Users Alleen Super Users Gevoelige modules alleen voor beheerders.

4.3 Een aangepast toegangsniveau aanmaken

Een typische praktijkwens is: "Premiumleden kunnen het volledige artikel lezen; iedereen ziet alleen de teaser."

Ga naar Gebruikers → Toegangsniveaus → Nieuw en stel het zo in:

Titel:    Premium Content
Groepen:  [x] Premium Members
          [x] Super Users        (altijd opnemen, anders sluit je jezelf buiten)

Zet nu het veld Toegang van een artikel op Premium Content, en alleen premiumleden plus Super Users zien het.

4.4 De Guest access level-truc

Het toegangsniveau Guest is alleen toegekend aan de groep Guest: bezoekers die niet zijn ingelogd. Dit niveau is erg handig voor websites die reageren op loginstatus.

Klassieke toepassingen:

  • Een loginmodule die verdwijnt zodra de gebruiker is ingelogd.
  • Een "Schrijf je in voor onze nieuwsbrief"-banner alleen voor anonieme bezoekers.
  • Teasercontent die na login wordt vervangen door de volledige versie.

Je kunt een Guest-module en een Registered-module op dezelfde positie combineren. Joomla toont de juiste module op basis van de loginstatus van de bezoeker.

4.5 Waar toegangsniveaus worden toegepast

Dezelfde dropdown voor toegangsniveaus zie je op veel plekken. Toegangsniveaus regelen zichtbaarheid voor:

  • Artikelen, categorieën en uitgelichte items.
  • Menu-items, een menu-item voor Registered verdwijnt voor anonieme bezoekers.
  • Modules, per positie en per pagina.
  • Contacten, nieuwsfeeds en banners.
  • Aangepaste velden, verberg individuele velden per toegangsniveau.

Dezelfde dropdown, hetzelfde effect, overal.

5. Rechten (ACL)

5.1 Van zichtbaarheid naar actie

Toegangsniveaus bepalen wie iets kan zien. Rechten bepalen wie iets kan doen. De Joomla ACL beantwoordt vragen zoals:

  • Mag deze groep artikelen aanmaken?
  • Mogen ze alleen hun eigen artikelen bewerken, of elk artikel?
  • Mogen ze publiceren?
  • Mogen ze artikelen verwijderen binnen een specifieke categorie?
  • Mogen ze überhaupt inloggen op de backend?

5.2 De standaard actieset

De meeste componenten tonen dezelfde acties. Sommige voegen daar eigen acties aan toe:

ActieBetekenis
Site Login Mag inloggen op de frontend.
Administrator Login Mag inloggen op de backend.
Offline Access Mag de website zien terwijl die offline staat.
Super User Onbeperkt, overschrijft alles hieronder.
Configure Mag de opties van een component aanpassen.
Access Administration Interface Mag de component openen in de backend.
Create Mag nieuwe items aanmaken.
Delete Mag items verwijderen.
Edit Mag elk item bewerken.
Edit State Mag items publiceren, depubliceren, archiveren of naar de prullenbak verplaatsen.
Edit Own Mag alleen items bewerken die de gebruiker zelf heeft aangemaakt.
Edit Custom Field Value Mag waarden in aangepaste velden wijzigen.

5.3 De vier rechtentoestanden

Voor elke combinatie van actie en groep kies je één van deze toestanden:

ToestandEffect
Overgenomen Neem over wat de parentcontext zegt, dit is de standaard.
Toegestaan Geef de actie expliciet vrij.
Geweigerd Verbied de actie expliciet en vergrendel die op alle lagere niveaus.
Niet ingesteld Alleen bovenaan de boom, behandeld als Geweigerd.

Na opslaan toont Joomla het berekende resultaat naast je instelling: Toegestaan, Niet toegestaan of het gevreesde Niet toegestaan (vergrendeld).

5.4 De rechtenhiërarchie

Rechten lopen via vier niveaus, waarbij elk niveau het niveau erboven kan overschrijven:

Algemene instellingen
 └── Componentopties (bijvoorbeeld com_content)
       └── Categorierechten
             └── Itemrechten (per artikel)

De praktische aanpak is:

  • Zet een basislijn in Algemene instellingen.
  • Versoepel of verscherp per component.
  • Overschrijf per categorie voor onderdelen zoals "Persberichten, alleen staff".
  • Gebruik het itemniveau alleen als laatste redmiddel.

5.5 De Deny-valkuil

De belangrijkste ACL-regel in Joomla is kort: Weigeren wint altijd.

Als een groep in Algemene instellingen op Geweigerd staat, kan geen Toestaan lager in de structuur dat herstellen. De lagere niveaus tonen letterlijk Niet toegestaan (vergrendeld) en maken de dropdown grijs.

Praktische richtlijnen:

  1. Gebruik standaard overal Overgenomen.
  2. Gebruik Toegestaan om rechten naar beneden toe te verlenen.
  3. Gebruik Geweigerd alleen wanneer je wilt dat de regel permanent en absoluut is, meestal op globaal niveau voor veiligheid.
  4. Als je een recht kwijt bent en niet snapt waarom, loop dan omhoog in de boom en zoek naar een Weigering.

5.6 Algemene instellingen: tabblad Rechten

Open Systeem → Algemene instellingen → Rechten. Dit bepaalt de standaard voor de hele website. Een typische basislijn ziet er zo uit:

GroepSite LoginAdmin LoginSuper User
Public Overgenomen (Niet toegestaan) Overgenomen Overgenomen
Registered Toegestaan Overgenomen Overgenomen
Author / Editor / Publisher Toegestaan Overgenomen Overgenomen
Manager Toegestaan Toegestaan Overgenomen
Administrator Toegestaan Toegestaan Overgenomen
Super Users Toegestaan Toegestaan Toegestaan

Zet deze laag goed neer, en ongeveer 80% van de ACL-"vreemdheden" verdwijnt.

5.7 Rechten op componentniveau

Elke component heeft een knop Opties in de toolbar met een eigen tabblad Rechten. Voor com_content (Artikelen) kun je bijvoorbeeld:

  • Aanmaken aanscherpen, zodat alleen Authors en hoger artikelen kunnen schrijven.
  • Status bewerken toestaan voor Publishers, maar niet voor Authors en Editors.
  • Toegang tot beheerinterface geven aan een groep Newsroom zonder ze Manager te maken.

Hier vindt de meeste dagelijkse ACL-configuratie plaats.

5.8 Rechten op categorieniveau

Open een categorie en kies het tabblad Rechten. Hier verfijn je rechten voor een specifieke sectie:

  • Leden mogen artikelen Aanmaken in de categorie Ledenverhalen.
  • Leden mogen Eigen items bewerken, maar niet Bewerken van items van anderen.
  • Newsroom mag Status bewerken in Persberichten, maar nergens anders.

Categorierechten zijn het juiste gereedschap voor redactionele workflows met meerdere teams. Je kunt newsroom, blog en ledencontent scheiden zonder iemand globaal "Bewerken" te geven.

5.9 Rechten op itemniveau

Elk artikel, en veel andere items, heeft een eigen tabblad Rechten. Gebruik dit spaarzaam: zet één gevoelig artikel dicht, of open één item als uitzondering voor een bredere groep. Als je veel individuele items moet overschrijven, is een nieuwe categorie meestal de betere oplossing.

5.10 Praktijkvoorbeeld: Newsroom Editors

Het doel is een groep Newsroom Editors die de categorie Persberichten volledig kan beheren, en verder niets. De stappen:

  1. Groep: maak Newsroom Editors aan met parent Registered.
  2. Algemene instellingen → Rechten: geef Newsroom Editors zowel Site Login als Administrator Login als Toegestaan.
  3. Artikelopties → Rechten: geef Newsroom Editors Toegang tot beheerinterface als Toegestaan. Laat de rest op Overgenomen.
  4. Categorie Persberichten → Rechten: geef Newsroom Editors Aanmaken, Bewerken, Status bewerken en Verwijderen als Toegestaan.
  5. Alle andere categorieën: laat alles overgenomen. De newsroom kan andere categorieën zien, maar niet aanpassen.

Klaar. Geen Super User, geen overbodige privileges.

6. Alles bij elkaar

6.1 Het complete beeld

De relatie tussen de vier ACL-concepten kun je het best zien als een stroom:

GEBRUIKER  →  behoort tot  →  GROEP(en)
                                  │
                                  │ geeft zichtbaarheid via
                                  ▼
                         TOEGANGSNIVEAU  →  Artikel / Module / Menu-item
                                  │
                                  │ geeft acties via
                                  ▼
                         RECHTEN (ACL)
                         ├── Algemene instellingen
                         ├── Component
                         ├── Categorie
                         └── Item

Kort gezegd: een gebruiker zit in een groep; een groep opent toegangsniveaus en draagt rechten; toegangsniveaus regelen zichtbaarheid; rechten regelen acties.

6.2 Frontend versus backendtoegang

DoelConfiguratie
Bezoeker kan publieke artikelen lezen Standaardinstellingen, toegangsniveau Public.
Bezoeker moet inloggen om te lezen Zet het veld Toegang van het artikel op Registered.
Ingelogde gebruiker kan artikelen indienen Groep heeft Aanmaken-recht op de categorie, plus een frontend menu-item voor indienen.
Gebruiker kan artikelen beheren in /administrator Groep heeft Administrator Login plus Toegang tot beheerinterface op de component.

Frontend en backend worden door dezelfde ACL geregeld. Alleen de rechtvlaggen verschillen.

7. Multi-factor authenticatie en beveiliging

7.1 Native MFA in Joomla 6

Joomla 4 introduceerde native multi-factor authenticatie, en Joomla 6 verfijnt dit verder. De ondersteunde methoden zijn:

  • TOTP: tijdgebaseerde eenmalige wachtwoorden, gebruikt door Google Authenticator en vergelijkbare apps.
  • WebAuthn: passkeys en hardwarebeveiligingssleutels.
  • YubiKey: een hardwaretoken.
  • E-mail OTP: een code die per e-mail wordt verzonden.
  • Vaste code: alleen nuttig voor testen.

Elke gebruiker kan MFA zelf inschakelen, of je kunt het afdwingen voor volledige groepen via de plugin Captive MFA. Back-upcodes worden automatisch gegenereerd, en je moet gebruikers altijd eraan herinneren die veilig op te slaan.

7.2 De captive login-flow

Joomla gebruikt een captive model: een ingelogde gebruiker die nog niet voldoet aan de MFA-eis blijft vast op de MFA-instelpagina totdat dit is afgerond. De gebruiker kan niet weg navigeren.

Je configureert dit via Gebruikers → Beheren → Opties → Multi-factor authenticatie. Het is een krachtige manier om een organisatiebrede beveiligingsregel af te dwingen zonder één regel code te schrijven.

7.3 Nuttige gebruikersgerelateerde plugins

Verschillende plugins breiden Joomla's gebruikerssysteem uit. Je vindt ze onder Systeem → Beheren → Plugins, gefilterd op Gebruiker en Authenticatie:

  • User - Joomla: core profilsynchronisatie, schakel deze niet uit.
  • User - Profile: extra profielvelden, zoals geboortedatum of akkoord met voorwaarden. Je kunt hiervoor ook Joomla's aangepaste velden bij Gebruikers gebruiken.
  • User - Contact Creator: maakt automatisch een Contact-item aan voor elke nieuwe gebruiker. Synchroniseert gegevens niet meer nadat gebruiker/contact zijn aangemaakt.
  • Authentication - Joomla / LDAP / Cookie: verschillende loginmethoden.
  • Multi-factor Authentication - ...: één plugin per MFA-methode.

Voor aangepaste logica kun je je eigen User-plugin schrijven die reageert op events zoals onUserBeforeSave, onUserAfterSave, onUserLogin en onUserLogout.

7.4 Aangepaste profielvelden

Er zijn twee manieren om aangepaste profieldata aan gebruikers toe te voegen:

  1. Aangepaste velden onder Gebruikers → Velden: een point-and-click manier om tekst, lijst, kalender, media en andere veldtypes toe te voegen. Elk veld kan een eigen toegangsniveau hebben, zodat alleen specifieke groepen het zien.
  2. User Profile-plugin: een codegedreven aanpak, ideaal voor verplichte gestructureerde data zoals geboortedatum of akkoord met voorwaarden.

In Joomla 6 zijn aangepaste velden meestal de juiste keuze. Gebruik de plugin alleen wanneer je server-side validatielogica nodig hebt.

8. Onder de motorkap (developer view)

8.1 De huidige gebruiker ophalen

De aanbevolen manier om de huidige gebruiker in Joomla 6 op te halen is via het applicatieobject:

use Joomla\CMS\Factory;

$app  = Factory::getApplication();
$user = $app->getIdentity();

if ($user->guest) {
    // niet ingelogd
}

echo $user->id;
echo $user->username;
echo $user->name;

De oudere methode Factory::getUser() werkt nog, maar is deprecated. Gebruik $app->getIdentity() in nieuwe code.

8.2 Rechten controleren in code

De methode authorise() is de kern van ACL aan de PHP-kant:

$user = Factory::getApplication()->getIdentity();

// Mag deze gebruiker elk artikel bewerken?
if ($user->authorise('core.edit', 'com_content')) {
    // ...
}

// Mag deze gebruiker artikelen in categorie 7 bewerken?
if ($user->authorise('core.edit', 'com_content.category.7')) {
    // ...
}

// Mag deze gebruiker dit specifieke artikel bewerken?
if ($user->authorise('core.edit', 'com_content.article.42')) {
    // ...
}

De asset-string (com_content.category.7) laat Joomla automatisch omhoog door de hiërarchie lopen. Je hoeft Global, Component, Category en Item niet zelf te controleren.

8.3 Toegangsniveaus controleren in code

Wil je controleren wat een gebruiker mag zien, vraag dan de geautoriseerde weergaveniveaus op:

$user       = Factory::getApplication()->getIdentity();
$viewLevels = $user->getAuthorisedViewLevels();   // array met niveau-ID's

if (in_array($article->access, $viewLevels, true)) {
    // gebruiker mag dit artikel zien
}

In databasequeries gebruik je dezelfde array aan de rechterkant van een IN(...)-filter:

$query->whereIn($db->quoteName('a.access'), $user->getAuthorisedViewLevels());

Elke core Joomla-query die content teruggeeft, doet precies dit.

8.4 Je eigen acties declareren: access.xml

Een custom component declareert zijn actieset in administrator/components/com_yourcomp/access.xml:

<?xml version="1.0" encoding="utf-8"?>
<access component="com_yourcomp">
    <section name="component">
        <action name="core.admin"      title="JACTION_ADMIN" />
        <action name="core.options"    title="JACTION_OPTIONS" />
        <action name="core.manage"     title="JACTION_MANAGE" />
        <action name="core.create"     title="JACTION_CREATE" />
        <action name="core.delete"     title="JACTION_DELETE" />
        <action name="core.edit"       title="JACTION_EDIT" />
        <action name="core.edit.state" title="JACTION_EDITSTATE" />
        <action name="core.edit.own"   title="JACTION_EDITOWN" />
    </section>
    <section name="category">
        <action name="core.create"     title="JACTION_CREATE" />
        <action name="core.delete"     title="JACTION_DELETE" />
        <action name="core.edit"       title="JACTION_EDIT" />
        <action name="core.edit.state" title="JACTION_EDITSTATE" />
        <action name="core.edit.own"   title="JACTION_EDITOWN" />
    </section>
</access>

Deze acties verschijnen automatisch als kolommen op het tabblad Rechten.

8.5 Nuttige databasetabellen

Het Joomla-gebruikerssysteem gebruikt verschillende coretabellen:

TabelBevat
#__users Gebruikersaccounts.
#__usergroups De groepsboom, opgeslagen met lft/rgt.
#__user_usergroup_map Many-to-many koppeling van gebruikers aan groepen.
#__viewlevels Toegangsniveaus met een geserialiseerde groepslijst.
#__assets De assetboom, één rij per component, categorie of item.
#__user_notes Gebruikersnotities, met eigen categorieën.
#__user_profiles Key-valueparen van de User Profile-plugin.
#__user_mfa MFA-methoden per gebruiker.

8.6 ACL inspecteren in de database

De kolom rules in #__assets is gewone JSON. Zodra je die kunt lezen, is ACL geen black box meer. Voorbeeld:

{
  "core.edit":       { "3": 1, "5": 0 },
  "core.edit.state": { "5": 1 },
  "core.delete":     { "8": 1 }
}
WaardeBetekenis
1 Toestaan
0 Weigeren
Sleutel ontbreekt Overnemen van de parent-asset

Deze asset staat dus core.edit toe voor groep 3 (Author), weigert het voor groep 5 (Editor, dus vergrendeld), en laat alle andere groepen overnemen.

8.7 Drie SQL-query's die elke Joomla-ontwikkelaar moet kennen

De volgende query's helpen je gebruikers-, groeps- en ACL-problemen direct in de database te debuggen:

1. Alle groepen waartoe een gebruiker behoort

SELECT u.username, g.title
  FROM jos_users u
  JOIN jos_user_usergroup_map m ON u.id = m.user_id
  JOIN jos_usergroups g         ON g.id = m.group_id
 ORDER BY u.username;

2. Toegangsniveaus en hun groepslijsten

SELECT id, title, rules
  FROM jos_viewlevels;

3. Elke asset met expliciete, niet-overgenomen regels

SELECT id, name, rules
  FROM jos_assets
 WHERE rules != '{}';

Vervang jos_ door je echte databaseprefix.

9. Veelgemaakte fouten en valkuilen

9.1 Weigeren is definitief

Een Weigering in Algemene instellingen kan lager in de structuur niet meer worden Toegestaan. De lagere niveaus tonen Niet toegestaan (vergrendeld) en maken de dropdown grijs. Gebruik Weigeren alleen wanneer je een regel absoluut wilt maken.

9.2 Groepsovererving verwarren met gebruikersovererving

Overerving geldt voor rechten, niet voor gebruikers. Een gebruiker toevoegen aan Editor voegt die gebruiker niet ook toe aan Author. Maar de Editor-groep erft wel de rechten van Author voor elke actie.

9.3 Super User te vaak gebruiken

Super User overschrijft elke Weigering en elke beperking. Het is verleidelijk om Super User te geven "om het werkend te krijgen", maar daarmee haal je alle vangrails weg. Beperk de Super Users-groep tot één of twee volledig vertrouwde personen.

9.4 Super Users vergeten in een aangepast toegangsniveau

Wanneer je een nieuw toegangsniveau maakt, neem dan altijd Super Users op in de groepslijst. Anders kun je jezelf buitensluiten van content die alleen je aangepaste groep mag zien.

9.5 Guest en Public door elkaar halen

Deze twee lijken op elkaar, maar betekenen iets anders:

  • Public: iedereen, ingelogd of niet.
  • Guest: expliciet niet ingelogd.

Een Public-module wordt aan alle bezoekers getoond. Een Guest-module verdwijnt zodra een gebruiker inlogt.

9.6 Een gebruiker verwijderen behoudt de content

Als je een gebruiker verwijdert, blijven de artikelen, contacten en andere items in de database staan met een created_by-veld dat naar een niet-bestaande gebruiker verwijst. Wijs auteurschap eerst opnieuw toe en verwijder daarna het account.

9.7 Public opnemen in aangepaste toegangsniveaus

Als je de Public-groep aanvinkt in een aangepast toegangsniveau, wordt dat niveau in feite gelijk aan "Public". Iedereen kan de content zien, en daarmee is het doel van het aangepaste niveau weg.

9.8 Rebuild overslaan na directe databasewijzigingen

Als je regels direct in #__assets bulk-bewerkt of gebruikers via SQL importeert, moet je mogelijk de assetboom opnieuw opbouwen en de cache legen. Anders blijft de interface oude resultaten tonen.

10. Best practices en snelle referentie

10.1 Een veilige ACL-workflow

  1. Plan eerst je groepen, op papier. Teken de boom.
  2. Zet de rechten in Algemene instellingen op een bekende, veilige basislijn. Sla op en test.
  3. Stel daarna componentrechten per component in. Sla op en test.
  4. Maak pas daarna aangepaste toegangsniveaus aan en gebruik ze.
  5. Gebruik categorierechten voor redactionele workflows.
  6. Raak itemrechten alleen aan als laatste redmiddel.
  7. Documenteer elke aangepaste groep en elk aangepast toegangsniveau in het overdrachtsdocument van de website.

Een praktische regel: als je je ACL niet op één A4 kunt tekenen, is het te complex. Vereenvoudig.

10.2 Performance-tips

Grote ACL-bomen kosten performance. Veelvoorkomende oorzaken van trage sites:

  • Honderden gebruikersgroepen, probeer onder de twintig te blijven.
  • Diep geneste groepshiërarchieën, meer dan vier niveaus wordt traag.
  • Per-artikel rechtenoverschrijvingen vermenigvuldigd over duizenden artikelen.
  • Te veel toegangsniveaus waar elke query rekening mee moet houden.

Als een Joomla-site traag aanvoelt na een rechtenrefactor, kijk dan eerst naar de ACL-boom.

10.3 Cheat sheet

GEBRUIKER      Gebruikers → Beheren
GROEP          Gebruikers → Groepen
TOEGANGSNIVEAU Gebruikers → Toegangsniveaus
RECHTEN        Algemene instellingen + Componentopties + Categorie + Item

GROEPSREGEL    Meerdere groepen per gebruiker, child erft rechten van parent
WEIGERREGEL    Weigeren wint altijd, geen Toestaan lager kan dit herstellen
EERST ERVEN    Gebruik standaard overal Overgenomen
INCLUDE SU     Neem Super Users altijd op in aangepaste toegangsniveaus
REBUILD        Na directe DB-wijzigingen, rebuild en cache legen
MFA            Gebruikers → Beheren → Opties → Multi-factor authenticatie

PHP CURRENT    Factory::getApplication()->getIdentity()
PHP AUTHORISE  $user->authorise('core.edit', 'com_content.category.7')
PHP VIEWLEVELS $user->getAuthorisedViewLevels()
ASSET RULES    #__assets.rules-kolom (JSON: 1 = Toestaan, 0 = Weigeren)

10.4 Snel mentaal model

  • Gebruikers zijn wie je bent.
  • Groepen bundelen gebruikers.
  • Toegangsniveaus zeggen wat je kunt zien.
  • Rechten zeggen wat je kunt doen.

11. Samenvatting

In Joomla is het gebruikerssysteem veel meer dan een loginformulier. Het beheert bijna elke laag van de website:

  • Identiteit: wie kan inloggen en hoe.
  • Zichtbaarheid: welke content aan wie wordt getoond.
  • Bevoegdheid: wie mag aanmaken, bewerken, publiceren en verwijderen.
  • Beveiliging: multi-factor authenticatie en groepsgebaseerde hardening.
  • Workflow: redactionele teams met duidelijke grenzen.
  • Developer-integratie: een gedeelde API voor gebruikers, groepen en ACL.
  • Compliance: AVG, audittrails en toegangscontrole.

Een goed gepland gebruikerssysteem maakt een Joomla-website veilig, voorspelbaar en jarenlang makkelijk te onderhouden. Een slechte inrichting leidt tot beveiligingsrisico's, gefrustreerde redacteuren en ACL-puzzels die steeds groter worden.

Als je een nieuwe Joomla-site plant, migreert vanaf een oudere versie of een rechtenknoop op een bestaande site wilt oplossen, kijk dan eerst naar gebruikersgroepen, toegangsniveaus en rechten. Beheer je die drie pijlers, dan werkt Joomla met je mee in plaats van tegen je.

Gebruikers en gebruikers groepen in Joomla
Peter Martin

Joomla en Linux specialist voor snelle, veilige en schaalbare websites.

© Peter Martin / db8 Website Support. All rights reserved.