Gebruikers en authenticatie

Voor een veilige API is het belangrijk om gebruikers te definiëren die toegang hebben tot je gegevens. Ook om alle functionaliteit van de interactieve documentatie te kunnen gebruiken, is het handig om alvast voor iedere rol een gebruiker te maken. In deze sectie leer je hoe je gebruikers configureert en hoe authenticatie werkt.

De users-sectie

Gebruikers worden gedefinieerd in de users-array van het JSON-configuratiebestand:

{
  "collections": [
    // Je collecties hier
  ],
  "users": [
    // Gebruikers komen hier
  ],
  "data": {
    // Je gegevens hier
  }
}

Gebruikers definiëren

Elke gebruiker moet minimaal een e-mail, wachtwoord en één of meer rollen krijgen zoals je ziet in onderstaand voorbeeld. Deze rollen lever je aan in de vorm van een array, omdat het ook mogelijk is om meerdere rollen tegelijkertijd te hebben. Het is gebruikelijk om rollen als user en admin te gebruiken, maar je kunt ook eigen rollen bedenken, zoals editor of driver als dat belangrijk is voor jouw applicatie. In de sectie over rollen en permissies leer je hier meer over.

{
  "users": [
    {
      "id" : 1,
      "email": "[email protected]",
      "password": "admin123",
      "roles": [
        "admin"
      ]
    },
    {
      "id" : 2,
      "email": "[email protected]",
      "password": "gebruiker123",
      "roles": [
        "user"
      ]
    },
    {
      "id" : 3,
      "email": "[email protected]",
      "password": "super123",
      "roles": [
        "admin",
        "editor",
        "user"
      ]
    }
  ]
}

Wanneer je een gebruiker inlogt met gebruikersnaam en wachtwoord, krijg je naast de JWT-token en rol ook de id terug.

Omdat gebruikers zelf geen collectie zijn, kun je de basisinformatie van gebruikers (e-mail en wachtwoord) niet aanpassen. Wanneer je gebruikers wil verrijken met extra informatie - zoals een gebruikersnaam, telefoonnummer, gelikte recepten, profielfoto of adres - maak je hiervoor een aparte collectie aan. Deze koppel je aan een gebruiker via een referentieveld.

Voorbeeld: Gebruikers voor een webshop

Hier is een voorbeeld van een users-sectie voor een webshop. De database wordt dus initieel gevuld met deze accounts:

{
  "users": [
    {
      "email": "[email protected]",
      "password": "admin123",
      "roles": [
        "admin"
      ]
    },
    {
      "email": "[email protected]",
      "password": "medewerker123",
      "roles": [
        "employee"
      ]
    },
    {
      "email": "[email protected]",
      "password": "voorraad123",
      "roles": [
        "inventory"
      ]
    },
    {
      "email": "[email protected]",
      "password": "klant123",
      "roles": [
        "user"
      ]
    }
  ]
}

Er zijn geen vereisten voor het wachtwoord.

In de volgende sectie zullen we leren hoe je rollen en permissies configureert om te bepalen wie wat mag doen in je API.