Skip to content

Commit 7f793dd

Browse files
committed
✨ Log extra JWT claims in AuditTrail
issue: open-zaak/open-zaak#1088 New JWT claims: - roles - department - company - kvk
1 parent 71ffd44 commit 7f793dd

3 files changed

Lines changed: 91 additions & 1 deletion

File tree

Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
# Generated by Django 2.2.25 on 2022-01-11 15:23
2+
3+
import django.contrib.postgres.fields
4+
from django.db import migrations, models
5+
6+
import vng_api_common.fields
7+
8+
9+
class Migration(migrations.Migration):
10+
11+
dependencies = [
12+
("audittrails", "0014_auto_20210323_1654"),
13+
]
14+
15+
operations = [
16+
migrations.AddField(
17+
model_name="audittrail",
18+
name="afdeling",
19+
field=models.CharField(
20+
blank=True,
21+
help_text="De afdeling waartoe de gebruiker behoort.",
22+
max_length=255,
23+
verbose_name="afdeling",
24+
),
25+
),
26+
migrations.AddField(
27+
model_name="audittrail",
28+
name="bedrijf",
29+
field=models.CharField(
30+
blank=True,
31+
help_text="Bedrijf waartoe de gebruiker behoort.",
32+
max_length=255,
33+
verbose_name="bedrijf",
34+
),
35+
),
36+
migrations.AddField(
37+
model_name="audittrail",
38+
name="kvk",
39+
field=vng_api_common.fields.RSINField(
40+
blank=True,
41+
help_text="KVK nummer van het bedrijf waartoe de gebruiker behoort.",
42+
max_length=9,
43+
verbose_name="kvk nummer",
44+
),
45+
),
46+
migrations.AddField(
47+
model_name="audittrail",
48+
name="rollen",
49+
field=django.contrib.postgres.fields.ArrayField(
50+
base_field=models.CharField(max_length=255),
51+
default=list,
52+
help_text="Komma-gescheiden lijst van rollen van de gebruiker.",
53+
size=None,
54+
verbose_name="rollen",
55+
),
56+
),
57+
]

vng_api_common/audittrails/models.py

Lines changed: 26 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,14 @@
11
import uuid
22

3-
from django.contrib.postgres.fields import JSONField
3+
from django.contrib.postgres.fields import ArrayField, JSONField
44
from django.contrib.postgres.indexes import GinIndex
55
from django.core.serializers.json import DjangoJSONEncoder
66
from django.core.validators import MaxValueValidator, MinValueValidator
77
from django.db import models
88
from django.utils.translation import ugettext_lazy as _
99

10+
from vng_api_common.fields import RSINField
11+
1012
from ..constants import ComponentTypes
1113
from ..descriptors import GegevensGroepType
1214

@@ -91,6 +93,29 @@ class AuditTrail(models.Model):
9193
blank=True,
9294
help_text=_("Toelichting waarom de handeling is uitgevoerd."),
9395
)
96+
rollen = ArrayField(
97+
models.CharField(max_length=255),
98+
default=list,
99+
verbose_name=_("rollen"),
100+
help_text=_("Komma-gescheiden lijst van rollen van de gebruiker."),
101+
)
102+
afdeling = models.CharField(
103+
max_length=255,
104+
blank=True,
105+
verbose_name=_("afdeling"),
106+
help_text=_("De afdeling waartoe de gebruiker behoort."),
107+
)
108+
bedrijf = models.CharField(
109+
max_length=255,
110+
blank=True,
111+
verbose_name=_("bedrijf"),
112+
help_text=_("Bedrijf waartoe de gebruiker behoort."),
113+
)
114+
kvk = RSINField(
115+
blank=True,
116+
verbose_name=_("kvk nummer"),
117+
help_text=_("KVK nummer van het bedrijf waartoe de gebruiker behoort."),
118+
)
94119
wijzigingen = GegevensGroepType(
95120
{"oud": oud, "nieuw": nieuw}, optional=["oud", "nieuw"], none_for_empty=True
96121
)

vng_api_common/audittrails/viewsets.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,10 @@ def create_audittrail(
6464

6565
user_id = jwt_auth.payload.get("user_id") or ""
6666
user_representation = jwt_auth.payload.get("user_representation") or ""
67+
roles = jwt_auth.payload.get("roles") or ""
68+
department = jwt_auth.payload.get("department") or ""
69+
company = jwt_auth.payload.get("company") or ""
70+
kvk = jwt_auth.payload.get("kvk") or ""
6771

6872
toelichting = get_header(self.request, "X-Audit-Toelichting") or ""
6973

@@ -78,6 +82,10 @@ def create_audittrail(
7882
actie_weergave=CommonResourceAction.labels.get(action, ""),
7983
gebruikers_id=user_id,
8084
gebruikers_weergave=user_representation,
85+
rollen=roles,
86+
afdeling=department,
87+
bedrijf=company,
88+
kvk=kvk,
8189
resultaat=status_code,
8290
hoofd_object=main_object,
8391
resource=self.basename,

0 commit comments

Comments
 (0)