# Toestemming programmatisch beheren

## Waar worden de toestemmingen opgeslagen?

Het volledige bewijs van de toestemming van de gebruiker wordt opgeslagen in de localStorage van de browser (de opslagsleutel heet dastra-consents) in json-formaat. De propagatie van toestemmingen hangt hiervan af, daarom wordt het niet aangeraden om de gegevens in deze sleutel direct te wijzigen.

{% hint style="info" %}
Het wordt niet aanbevolen om de gegevens in de localStorage rechtstreeks te wijzigen. Gebruik bij voorkeur de dastra Javascript SDK.
{% endhint %}

### Toegang tot de toestemmingsservice

De toestemmingsservice van dastra kan als volgt worden geopend

```Javascript
<script>
dastra = dastra || []
dastra.push(['cookieReady',function(manager){
    console.log(manager.consent)
});
</script>
```

### Lijst van beschikbare methoden in de toestemmingsmanager

In manager.consent zijn de volgende methoden beschikbaar:

* open(): opent de toestemmingswidget.
* close(): Sluit de toestemmingswidget.
* getAllConsents(): Alle toestemmingen ophalen.
* getPurposeConsent(purposeId:number): vraagt toestemming op voor een categorie cookies
* setPurposeConsent(purposeId:number, consent:bool): stelt de toestemming voor een categorie in
* getServiceConsent(serviceShortName:string): hiermee wordt de toestemming voor een bepaalde dienst opgehaald.
* setServiceConsent(serviceShortName:string, consent:bool): stelt de toestemming voor een bepaald item in.

### De lijst met gebruikerstoestemmingen ophalen (getAllConsents)

Als je eenmaal toegang hebt tot de toestemmingsmanager, is het heel eenvoudig om de toestemmingen van de huidige gebruiker op te vragen:

```Javascript
<script>
dastra = dastra || []
dastra.push(['cookieReady', functie(manager){
    // De volledige lijst met toestemmingsservices ophalen
    var consents = manager.consent.getAllConsents()
});
</script>
```

De bovenstaande methode retourneert een lijst met alle toestemmingen van de gebruiker

```javascript
[
  {
    "id":"000000-0000000-000000",
    "name": "Service name",
    "purpose": 1,
    "logoUrl": "https://logo-url/img.jpg",
    "privacyPolicyUrl":"",
    "description": "Short description",
    "defaultConsent": true,
    "requiredConsent":true
  },
  ...
]
```

### Toestemmingen per categorie opvragen (getPurposeConsent/setPurposeConsent)

Cookiecategorieën worden vertegenwoordigd door de volgende id's:

| Type         | Id |
| ------------ | -- |
| Noodzakelijk | 0  |
| Voorkeuren   | 1  |
| Analytisch   | 2  |
| Marketing    | 3  |
| Andere       | 4  |

```Javascript
<script>
dastra = dastra || []
dastra.push(['cookieReady',function(manager){
    // De volledige lijst met toestemmingsservices ophalen
    laat cookiePurpose = 2; // 2 = Analytisch
    laat toestemmingen = manager.consent.getPurposeConsent(cookiePurpose);
    manager.consent.setPurposeConsent(cookiePurpose, false)
});
</script>
```

### Toestemmingen per service manipuleren

Om toestemmingen per service te manipuleren, heb je de vereenvoudigde servicenaam nodig die beschikbaar is in de servicebeheerinterface van je widget.

{% hint style="info" %}
\*\*Hoe vind ik de vereenvoudigde servicenaam? Ga naar de servicebeheerinterface en bewerk een service. De vereenvoudigde naam (slug) van de service verschijnt onder de naam van de cookie.
{% endhint %}

![Locatie van vereenvoudigde cookienaam](https://github.com/Dastrateam/dastra-doc-nl/blob/main/features/..gitbook/assets/image%20\(67\).png)

```javascript
<script> 
dastra = dastra || []
dastra.push(['cookieReady',function(manager){
    // De volledige lijst met toestemmingsservices ophalen
    laat cookiePurpose = 'google-analytics'; // 2 = Analytic
    laat toestemmingen = manager.consent.getServiceConsent(cookiePurpose );
    manager.consent.setServicePurpose(cookiePurpose, false)
});
</script>
```


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://doc.dastra.eu/nl/features/gerer-le-consentement-aux-cookies/integration-technique/gerer-le-consentement-programmatiquement.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
