gdpr added
This commit is contained in:
parent
9268ac8e13
commit
c86b41c48a
@ -1 +1 @@
|
||||
__version__ = '0.1.28'
|
||||
__version__ = '0.1.29'
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
6
rugwebsite/forms.py
Executable file
6
rugwebsite/forms.py
Executable file
@ -0,0 +1,6 @@
|
||||
from django import forms
|
||||
|
||||
|
||||
class RequestGDPRDelete(forms.Form):
|
||||
email = forms.EmailField(widget=forms.EmailInput)
|
||||
|
43
rugwebsite/migrations/0001_initial.py
Normal file
43
rugwebsite/migrations/0001_initial.py
Normal file
@ -0,0 +1,43 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
# Generated by Django 1.11.7 on 2018-05-04 11:30
|
||||
from __future__ import unicode_literals
|
||||
|
||||
from django.conf import settings
|
||||
from django.db import migrations, models
|
||||
import django.db.models.deletion
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
initial = True
|
||||
|
||||
dependencies = [
|
||||
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.CreateModel(
|
||||
name='GDPRAgreed',
|
||||
fields=[
|
||||
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('agreed_at', models.DateTimeField()),
|
||||
('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)),
|
||||
],
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='PendingGDPRAgree',
|
||||
fields=[
|
||||
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('token', models.TextField()),
|
||||
('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)),
|
||||
],
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='PendingGDPRDelete',
|
||||
fields=[
|
||||
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('token', models.TextField()),
|
||||
('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)),
|
||||
],
|
||||
),
|
||||
]
|
@ -0,0 +1,71 @@
|
||||
from django.contrib.auth.models import User
|
||||
from django.contrib.auth.signals import user_logged_out
|
||||
from django.contrib.contenttypes.models import ContentType
|
||||
from django.contrib.sessions.models import Session
|
||||
from django.db import models
|
||||
|
||||
from django.utils import timezone
|
||||
|
||||
from django.core.mail import EmailMultiAlternatives
|
||||
from django.template.loader import get_template
|
||||
|
||||
from django.conf import settings
|
||||
|
||||
class GDPRAgreed(models.Model):
|
||||
user = models.ForeignKey('auth.User', on_delete=models.CASCADE)
|
||||
agreed_at = models.DateTimeField()
|
||||
|
||||
|
||||
class PendingGDPRAgree(models.Model):
|
||||
user = models.ForeignKey('auth.User', on_delete=models.CASCADE)
|
||||
token = models.TextField()
|
||||
|
||||
def agree(self):
|
||||
GDPRAgreed(user=self.user, agreed_at=timezone.now()).save()
|
||||
self.delete()
|
||||
|
||||
def email(self):
|
||||
html_content = get_template('rugwebsite/email/gdpr_consent.html').render(
|
||||
{'user': self.user, 'token': self.token, 'url': settings.SITE_URL}
|
||||
)
|
||||
text_content = get_template('rugwebsite/email/gdpr_consent.txt').render(
|
||||
{'user': self.user, 'token': self.token, 'url': settings.SITE_URL}
|
||||
)
|
||||
msg = EmailMultiAlternatives(
|
||||
'Over uw persoonsgegevens',
|
||||
text_content,
|
||||
'no-reply@cosmo.service.rug.nl',
|
||||
[self.user.email])
|
||||
msg.attach_alternative(html_content, "text/html")
|
||||
msg.send()
|
||||
|
||||
|
||||
class PendingGDPRDelete(models.Model):
|
||||
user = models.ForeignKey('auth.User', on_delete=models.CASCADE)
|
||||
token = models.TextField()
|
||||
|
||||
def forget(self, request):
|
||||
self.user.username = 'deleted_at_{}'.format(timezone.now())
|
||||
self.user.first_name = ''
|
||||
self.user.last_name = ''
|
||||
self.user.email = ''
|
||||
self.user.is_active = False
|
||||
self.user.save()
|
||||
user_logged_out.send(sender=self.user.__class__, request=request, user=self.user)
|
||||
self.delete()
|
||||
|
||||
def email(self):
|
||||
html_content = get_template('rugwebsite/email/gdpr_delete.html').render(
|
||||
{'user': self.user, 'token': self.token, 'url': settings.SITE_URL}
|
||||
)
|
||||
text_content = get_template('rugwebsite/email/gdpr_delete.txt').render(
|
||||
{'user': self.user, 'token': self.token, 'url': settings.SITE_URL}
|
||||
)
|
||||
|
||||
msg = EmailMultiAlternatives(
|
||||
'Verzoek verwijdering persoonsgegevens',
|
||||
text_content,
|
||||
'cosmo@rug.nl',
|
||||
[self.user.email])
|
||||
msg.attach_alternative(html_content, "text/html")
|
||||
msg.send(fail_silently=False)
|
@ -1,4 +1,5 @@
|
||||
{% load staticfiles %}
|
||||
|
||||
<!DOCTYPE html>
|
||||
<html lang="en" style="background: #fff;">
|
||||
<head>
|
||||
@ -41,24 +42,30 @@
|
||||
{% if user.is_authenticated %}
|
||||
<li class="rug-nav--meta__item rug-mr-xs">
|
||||
{% block accountlink %}<a href="#" class=""><span class="rug-icon rug-icon--user rug-mr-xs" aria-hidden="true"></span><span>Welcome {{ user.get_username }}</span></a>{% endblock %}
|
||||
{% comment %}<div class="rug-nav--meta__flyout">
|
||||
<div class="rug-nav--meta__flyout">
|
||||
<ul class="rug-list--unstyled">
|
||||
<li>
|
||||
<a href="{% url 'logout' %}?next={{ request.path }}" data-opener="logout" class="js--popup-opener"><span aria-hidden="true" class="rug-icon rug-icon--caret-right rug-mr-xs"></span>Log out</a>
|
||||
</li>
|
||||
</ul>{% endcomment %}
|
||||
</ul>
|
||||
</div>
|
||||
</li>
|
||||
<li class="rug-nav--meta__item rug-mr-xs">
|
||||
<a href="{% url 'gdpr' %}" class=""><span class="rug-icon rug-icon--user rug-mr-xs" aria-hidden="true"></span><span>About personal data</span></a>
|
||||
</li>
|
||||
{% else %}
|
||||
<li class="rug-nav--meta__item rug-mr-xs">
|
||||
<a href="{% url 'saml:saml2_auth' %}?provider=RuG" class=""><span class="rug-icon rug-icon--user rug-mr-xs" aria-hidden="true"></span><span>Login via the University of Groningen Single Sign on.</span></a>
|
||||
</li>
|
||||
<li class="rug-nav--meta__item rug-mr-xs">
|
||||
<a href="{% url 'gdpr' %}" class=""><span class="rug-icon rug-icon--user rug-mr-xs" aria-hidden="true"></span><span>About personal data</span></a>
|
||||
</li>
|
||||
{% endif %}
|
||||
</ul>
|
||||
</nav>
|
||||
</div>
|
||||
</div>
|
||||
{% if user.is_authenticated %}
|
||||
{% if user.is_authenticated or shownav %}
|
||||
<div class="rug-background-menu rug-shadow-box-inset">
|
||||
<div class="rug-nav-left-white"></div>
|
||||
<div class="rug-nav-center-1600">
|
||||
|
38
rugwebsite/templates/rugwebsite/email/gdpr_consent.html
Normal file
38
rugwebsite/templates/rugwebsite/email/gdpr_consent.html
Normal file
@ -0,0 +1,38 @@
|
||||
<p>Beste {{ user.first_name }} {{ user.last_name }},</p>
|
||||
|
||||
<p>
|
||||
Omdat vanaf 25 mei aanstaande nieuwe privacy-wetgeving van de EU ingaat, willen wij u informeren over de
|
||||
persoonsgegevens die wij van u hebben. U heeft in het verleden gebruik gemaakt van
|
||||
{% block gdpr_title %}Super Awesome Website{% endblock %} door in te loggen met uw centrale RUG personeels-
|
||||
of studentnummer en wachtwoord. Toen zijn uw RUG e-mailadres, voornaam, achternaam en student- of personeelsnummer
|
||||
gekopieerd naar onze database. Op die manier kunt u inloggen en gebruik maken van onze website.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
Samengevat worden de gegevens gebruikt voor authenticatie op onze website en in sommige gevallen voor het
|
||||
beoordelen van vakgebonden opdrachten die u via onze website maakt. Meer informatie vind u op de volgende pagina.
|
||||
</p>
|
||||
|
||||
<a href="{{ url }}{% url 'gdpr-agree' user.email token %}">{{ url }}{% url 'gdpr-agree' user.email token %}</a>
|
||||
|
||||
<p>
|
||||
Wij willen u vragen voor 25 mei aanstaande toestemming te geven om deze gegevens te bewaren. Doet u dat niet,
|
||||
dan verdwijnt uw
|
||||
account op 25 mei. U kunt dan wel opnieuw inloggen, maar dan wordt er een nieuw account aangemaakt en heeft
|
||||
geen toegang meer tot gegevens die voorheen aan uw account gebonden waren en niet uw persooonsgegevens zijn.
|
||||
|
||||
Mogelijk betekent dat ook opdrachten die nog niet officieel beoordeeld zijn, dan niet meer beoordeeld kunnen worden,
|
||||
omdat niet meer te achterhalen valt wie die heeft uitgevoerd. Mocht u nog wachten op zo'n beoordeling maar wel uw
|
||||
persoonsgegevens willen verwijderen, dan adviseren wij u eerst akkoord te gaan, maar na de officiele beoordeling uw
|
||||
persoonsgegevens alsnog te verwijderen. Dat kan eenvoudig via een link op de website.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
Geeft u wel toestemming dan kunt u later alsnog uw persoonsgegevens verwijderen. <strong>Met de volgende link kunt
|
||||
u toestemming geven, door op "Toestemming geven" te klikken.</strong>
|
||||
</p>
|
||||
|
||||
<a href="{{ url }}{% url 'gdpr-agree' user.email token %}?agree">{{ url }}{% url 'gdpr-agree' user.email token %}?agree</a>
|
||||
|
||||
<p>Met vriendelijke groet,</p>
|
||||
<p>{% block gdpr_close %}Super Awesome Website{% endblock %}</p>
|
35
rugwebsite/templates/rugwebsite/email/gdpr_consent.txt
Normal file
35
rugwebsite/templates/rugwebsite/email/gdpr_consent.txt
Normal file
@ -0,0 +1,35 @@
|
||||
Beste {{ user.first_name }} {{ user.last_name }},
|
||||
|
||||
Omdat vanaf 25 mei aanstaande nieuwe privacy-wetgeving van de EU ingaat, willen wij u informeren over de
|
||||
persoonsgegevens die wij van u hebben. U heeft in het verleden gebruik gemaakt van
|
||||
{% block gdpr_title %}Super Awesome Website{% endblock %} door in te loggen met uw centrale RUG personeels-
|
||||
of studentnummer en wachtwoord. Toen zijn uw RUG e-mailadres, voornaam, achternaam en student- of personeelsnummer
|
||||
gekopieerd naar onze database. Op die manier kunt u inloggen en gebruik maken van onze website.
|
||||
|
||||
|
||||
Samengevat worden de gegevens gebruikt voor authenticatie op onze website en in sommige gevallen voor het
|
||||
beoordelen van vakgebonden opdrachten die u via onze website maakt. Meer informatie vind u op de volgende pagina.
|
||||
|
||||
|
||||
{{ url }}{% url 'gdpr-agree' user.email token %}
|
||||
|
||||
|
||||
Wij willen u vragen voor 25 mei aanstaande toestemming te geven om deze gegevens te bewaren. Doet u dat niet,
|
||||
dan verdwijnt uw account op 25 mei. U kunt dan wel opnieuw inloggen, maar dan wordt er een nieuw account aangemaakt
|
||||
en heeft geen toegang meer tot gegevens die voorheen aan uw account gebonden waren en niet uw persooonsgegevens zijn.
|
||||
|
||||
Mogelijk betekent dat ook opdrachten die nog niet officieel beoordeeld zijn, dan niet meer beoordeeld kunnen worden,
|
||||
omdat niet meer te achterhalen valt wie die heeft uitgevoerd. Mocht u nog wachten op zo'n beoordeling maar wel uw
|
||||
persoonsgegevens willen verwijderen, dan adviseren wij u eerst akkoord te gaan, maar na de officiele beoordeling uw
|
||||
persoonsgegevens alsnog te verwijderen. Dat kan eenvoudig via een link op de website.
|
||||
|
||||
|
||||
Geeft u wel toestemming dan kunt u later alsnog uw persoonsgegevens verwijderen. Met de volgende link geeft
|
||||
u toestemming.
|
||||
|
||||
|
||||
{{ url }}{% url 'gdpr-agree' user.email token %}?agree
|
||||
|
||||
|
||||
Met vriendelijke groet,
|
||||
{% block gdpr_close %}Super Awesome Website{% endblock %}
|
26
rugwebsite/templates/rugwebsite/email/gdpr_delete.html
Normal file
26
rugwebsite/templates/rugwebsite/email/gdpr_delete.html
Normal file
@ -0,0 +1,26 @@
|
||||
<p>Beste {{ user.first_name }} {{ user.last_name }},</p>
|
||||
|
||||
<p>
|
||||
Op uw verzoek sturen we u een link om uw persoonsgegevens van
|
||||
{% block gdpr_title %}Super Awesome Website{% endblock %}
|
||||
te verwijderen. Wanneer u uw persoonsgegevens verwijdert, wordt ook uw personeels- of studentnummer verwijderd.
|
||||
Dat betekend dat wij geen manier meer hebben om u the authenticeren en u kunt daarna dus niet meer inloggen.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
Logt u wel opnieuw in, dan worden uw gegevens opnieuw uit de centrale database van de RUG gehaald, en
|
||||
krijgt u een nieuw en leeg account. In dat geval staan uw persoonsgegevens, namelijk e-mailadres, voornaam,
|
||||
achternaam en student- of personeelsnummer weer in onze database.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
Uw wachtwoord wordt door de centrale database van de RUG beheert, daar hebben wij geen toegang toe.
|
||||
Wij gebruiken dezelfde authenticatie als bijvoorbeeld Nestor, progresswww en my university.
|
||||
</p>
|
||||
|
||||
<p>Gebruik deze link om al uw persoonsgegevens te verwijderen, u kunt niet meer inloggen.</p>
|
||||
|
||||
<a href="{{ url }}{% url 'gdpr-delete' user.email token %}">{{ url }}{% url 'gdpr-delete' user.email token %}</a>
|
||||
|
||||
<p>Met vriendelijke groet,</p>
|
||||
<p>{% block gdpr_close %}Super Awesome Website{% endblock %}</p>
|
24
rugwebsite/templates/rugwebsite/email/gdpr_delete.txt
Normal file
24
rugwebsite/templates/rugwebsite/email/gdpr_delete.txt
Normal file
@ -0,0 +1,24 @@
|
||||
Beste {{ user.first_name }} {{ user.last_name }},
|
||||
|
||||
|
||||
Op uw verzoek sturen we u een link om uw persoonsgegevens van {% block gdpr_title %}Super Awesome Website{% endblock %}
|
||||
te verwijderen. Wanneer u uw persoonsgegevens verwijdert, wordt ook uw personeels- of studentnummer verwijderd.
|
||||
Dat betekend dat wij geen manier meer hebben om u the authenticeren en u kunt daarna dus niet meer inloggen.
|
||||
|
||||
|
||||
Logt u wel opnieuw in, dan worden uw gegevens opnieuw uit de centrale database van de RUG gehaald, en
|
||||
krijgt u een nieuw en leeg account. In dat geval staan uw persoonsgegevens, namelijk e-mailadres, voornaam,
|
||||
achternaam en student- of personeelsnummer weer in onze database.
|
||||
|
||||
|
||||
Uw wachtwoord wordt door de centrale database van de RUG beheert, daar hebben wij geen toegang toe.
|
||||
Wij gebruiken dezelfde authenticatie als bijvoorbeeld Nestor, progresswww en my university.
|
||||
|
||||
|
||||
Gebruik deze link om al uw persoonsgegevens te verwijderen, u kunt niet meer inloggen.
|
||||
|
||||
|
||||
{{ url }}{% url 'gdpr-delete' user.email token %}
|
||||
|
||||
Met vriendelijke groet,
|
||||
{% block gdpr_close %}Super Awesome Website{% endblock %}
|
190
rugwebsite/templates/rugwebsite/gdpr.html
Executable file
190
rugwebsite/templates/rugwebsite/gdpr.html
Executable file
@ -0,0 +1,190 @@
|
||||
{% extends "rugwebsite/base.html" %}
|
||||
|
||||
{% load static %}
|
||||
{% load bootstrap4 %}
|
||||
|
||||
{% block nav %}
|
||||
<div class="rug-nav-item rug-nav-item-active">
|
||||
<a href="{% url 'gdpr' %}">GDPR</a>
|
||||
</div>
|
||||
{% endblock %}
|
||||
|
||||
|
||||
{% block content %}
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<div class="col-md-4">
|
||||
<h1>GDPR</h1>
|
||||
<p>Privacyverklaring</p>
|
||||
<br/>
|
||||
<a href="{% url 'gdpr-request-delete' %}">Verzoek tot verwijderen persoonsgegevens</a>
|
||||
{% if show_agree_button %}
|
||||
<br/>
|
||||
<a href="#" data-toggle="modal" data-target="#gdpr-agree-modal">Toestemming geven</a>
|
||||
{% endif %}
|
||||
|
||||
</div>
|
||||
<div class="col-md-8">
|
||||
{% block gdpr_content %}
|
||||
<h1>Privacyverklaring {% block gdpr_title %}Super Awesome Website{% endblock %}</h1>
|
||||
|
||||
<h2>Inleiding</h2>
|
||||
|
||||
<p>
|
||||
De Rijksuniversiteit Groningen (RUG) wil zorgvuldig omgaan met uw persoonsgegevens. Op grond van de
|
||||
privacywetgeving, die de RUG in acht neemt, is de RUG daar ook verantwoordelijk voor. In deze privacyverklaring
|
||||
wordt u geïnformeerd over hoe de RUG gegevens van u verwerkt en over de rechten die u hebt. Deze privacyverklaring
|
||||
is een aanvulling op de
|
||||
<a href="https://www.rug.nl/language-centre/about-us/quality-assurance/bescherming-persoonsgegevens.pdf">
|
||||
‘Regeling Bescherming Persoonsgegevens Studenten en Personeel’
|
||||
</a>
|
||||
van de RUG. Bij tegenstrijdigheid prevaleert deze privacyverklaring.
|
||||
</p>
|
||||
|
||||
<h2>Contactgegevens verantwoordelijke</h2>
|
||||
|
||||
<p>U kunt met uw vragen en verzoeken bij de RUG terecht. U kunt terecht bij:</p>
|
||||
|
||||
<p>Rijksuniversiteit Groningen</p>
|
||||
<p>Postadres: Postbus 72 9700 AB Groningen</p>
|
||||
<p>E-mail: privacy@rug.nl</p>
|
||||
<p>Contactpersoon {% block gdpr_c_title %}{% endblock %}: {% block gdpr_contact %}{% endblock %}</p>
|
||||
<p>Functionaris voor de Gegevensbescherming: Arjen Deenen</p>
|
||||
|
||||
|
||||
<h2>Doel en grondslag verwerking</h2>
|
||||
|
||||
<p>
|
||||
De RUG verwerkt uw persoonsgegevens in het kader van educatie. Het bijhouden van uw
|
||||
{% block gdpr_content_summary %}voornaam, achternaam, e-mailadres en personeels- of studentnummer{% endblock %},
|
||||
dient daarbij verschillende doelen:
|
||||
</p>
|
||||
|
||||
{% block gdpr_goals %}
|
||||
<ul>
|
||||
<li>educatie, de beoordeling van opdrachten voor vakken waarvoor u de workbench nodig heeft,</li>
|
||||
<li>authenticatie, zodat u kunt inloggen op de workbench, uw annotaties kunt zien of aanpassen wanneer
|
||||
dat gepast is.</li>
|
||||
</ul>
|
||||
{% endblock gdpr_goals %}
|
||||
|
||||
<p>
|
||||
Verder worden de annotaties die u met de workbench maakt opgeslagen en gekoppeld aan deze persoonsgegevens.
|
||||
Als vergeten wilt worden, kunt uw persoonsgegevens <a href="{% url 'gdpr-request-delete' %}">hier</a> verwijderen. U ontvangt
|
||||
een e-mail met een link waarop u moet klikken. Dan worden uw personeels- of studentnummer, ur voor- en achternaam
|
||||
en uw e-mailadres verwijdert en kunt u geen gebruik meer maken van de dienst.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
Samengevat wil de RUG met deze website gegevens verzamelen voor wetenschappelijk onderzoek. Het realiseren van
|
||||
deze doelen is te rechtvaardigen op basis van de volgende grondslagen
|
||||
</p>
|
||||
|
||||
{% block gdpr_grondslagen %}
|
||||
<ul>
|
||||
<li>ondubbelzinnige toestemming,</li>
|
||||
<li>noodzakelijk voor uitvoering overeenkomst, of</li>
|
||||
<li>noodzakelijk voor invulling publiekrechtelijke taak (bij bestuursorgaan).</li>
|
||||
</ul>
|
||||
{% endblock gdpr_grondslagen %}
|
||||
|
||||
<h2>Verwerkte persoonsgegevens</h2>
|
||||
|
||||
|
||||
<p>De RUG verwerkt in het kader van educatie de volgende persoonsgegevens van u:</p>
|
||||
<ul>
|
||||
<li>Voor- en achternaam, om u eenvoudig te kunnen identificeren in andere administraties,</li>
|
||||
<li>e-mailadres, om contact met u op te kunnen nemen,</li>
|
||||
<li>personeels- of student-nummer, om u eenduidig te kunnen koppelen aan bijvoorbeeld een cijferlijst en om het
|
||||
mogelijk te maken u in te laten loggen.</li>
|
||||
</ul>
|
||||
|
||||
<p>
|
||||
Uw wachtwoord wordt op geen enkele manier door ons opgeslagen of verwerkt, voor authenticatie gebruiken
|
||||
wij de algemene aucount registratie van de RUG, die wordt beheerd door de afdeling Identity and Access Management
|
||||
(IAM) van de RUG.
|
||||
</p>
|
||||
|
||||
<h2>Ontvangers van uw persoonsgegevens</h2>
|
||||
|
||||
<p>
|
||||
Binnen de organisatie van de RUG worden uw persoonsgegevens uitsluitend verwerkt door de personen voor wie dat
|
||||
noodzakelijk is in het kader van het uitzetten en houden van educatie en onderzoek.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
Voor het opzetten en uitvoeren van de Pictures-And-Text workbench schakelt de RUG geen externe partner (verwerker)
|
||||
in. Alle geautomatiseerde verwerking vindt plaats binnen de RUG bij het Centrum voor Informatietechnologie.
|
||||
</p>
|
||||
|
||||
<h2>Bewaartermijnen</h2>
|
||||
|
||||
<p>
|
||||
De RUG bewaart uw persoonsgegevens totdat u een verwijderdverzoek indient. Dan worden uw voornaam,
|
||||
achternaam, student- of personeelsnummer en e-mailadres verwijderd, maar niet de annotaties die u heeft
|
||||
toegevoegd, omdat dit geen persoonsgegevens betreft.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
U kunt <a href="{% url 'gdpr-request-delete' %}">hier</a> een verwijderverzoek indienen. Dat gaat volledig
|
||||
eletronisch, niemand wordt op de hoogte gesteld van het verzoek en uw verzoek hoeft niet handmatig
|
||||
goedgekeurd te worden.
|
||||
<p>
|
||||
Houdt u er rekening mee dat de gegevens nodig zijn voor het behalen van cijfers, mocht u verwijdering eisen
|
||||
voordat uw werk beoordeeld is, dan kunt u mogelijk uw vakken niet met succes afsluiten.
|
||||
</p>
|
||||
|
||||
<h2>Uw rechten</h2>
|
||||
|
||||
<p>
|
||||
U hebt op grond van de privacywetgeving diverse rechten. U kunt voor de uitoefening van uw rechten contact opnemen
|
||||
met de RUG. Uw verzoeken worden binnen een maand na ontvangst beoordeeld en afgehandeld. Voor behandeling wordt
|
||||
vastgesteld dat het verzoek is ingediend door een bevoegd persoon en dat het legitiem is. Daarom kan om uw
|
||||
legitimatie worden gevraagd voordat het verzoek in behandeling wordt genomen.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
U hebt het recht te verzoeken om een overzicht van de over u verwerkte persoonsgegevens en de verwerkingen daarvan.
|
||||
Als u vindt dat uw persoonsgegevens onjuist zijn of als u niet langer wilt dat uw gegevens worden verwerkt, kunt u
|
||||
vragen om deze gegevens aan te passen of om verwerking van uw persoonsgegevens te stoppen en deze te verwijderen.
|
||||
U hebt in bepaalde gevallen ook recht op een afschrift van uw persoonsgegevens in een bruikbaar formaat. Om uw
|
||||
verzoek te beoordelen en af te handelen, worden vanzelfsprekend uw persoonsgegevens verwerkt.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
Naast het feit dat u bij de RUG terecht kunt met uw vragen, verzoeken en klachten, hebt u het recht om een klacht
|
||||
in te dienen bij de toezichthoudende autoriteit. Dit is in Nederland de Autoriteit Persoonsgegevens.
|
||||
</p>
|
||||
|
||||
<h2>Veranderingen in deze privacyverklaring</h2>
|
||||
|
||||
<p>
|
||||
De RUG kan deze privacyverklaring wijzigen. Aanleiding hiervoor kan zijn: (wijziging van)wet- en regelgeving,
|
||||
wijziging in het overkoepelende privacybeleid van de RUG en voortschrijden van de techniek. Uiteraard wordt u
|
||||
hiervan tijdig op de hoogte gesteld.
|
||||
</p>
|
||||
{% endblock gdpr_content %}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{% if show_agree_button %}
|
||||
<div class="modal fade" tabindex="-1" role="dialog" id="gdpr-agree-modal">
|
||||
<div class="modal-dialog" role="gdpr-agree">
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
<h4 class="modal-title">Gaat u akkoord?</p>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
Gaat u akoord met het opslaan van uw persoonsgegevens volgens de privacyverklaring?
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<button type="button" class="btn btn-danger" data-dismiss="modal">Nee</button>
|
||||
<a href="{% url 'gdpr-agree' email token %}?agree" class="btn btn-success">Ja</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{% endif %}
|
||||
|
||||
{% endblock content%}
|
24
rugwebsite/templates/rugwebsite/gdpr_agree_success.html
Executable file
24
rugwebsite/templates/rugwebsite/gdpr_agree_success.html
Executable file
@ -0,0 +1,24 @@
|
||||
{% extends "rugwebsite/base.html" %}
|
||||
|
||||
{% load static %}
|
||||
|
||||
|
||||
{% block content %}
|
||||
<h1>Hartelijk dank!</h1>
|
||||
|
||||
<p>
|
||||
{% if already_agreed %}
|
||||
U was al eerder akoord gegaan.<br/>
|
||||
<br/>
|
||||
Eventueel kunt u <a href="{% url 'gdpr-request-delete' %}">hier</a> een verwijder verzoek indienen.
|
||||
{% elif token_not_found %}
|
||||
Er ging iets mis, neem contact op met de Data Protection Officer van de RUG. Excuses voor het ongemak.
|
||||
<br/>
|
||||
Eventueel kunt u <a href="{% url 'gdpr-request-delete' %}">hier</a> een verwijder verzoek indienen.
|
||||
{% else %}
|
||||
We zullen uw persoonsgegevens zorgvuldig bewaren. Mocht u in de toekomst van gedachte veranderen, dan kunt u ze
|
||||
<a href="{% url 'gdpr-request-delete' %}">hier</a>
|
||||
verwijderen.
|
||||
{% endif %}
|
||||
</p>
|
||||
{% endblock content %}
|
14
rugwebsite/templates/rugwebsite/gdpr_delete.html
Executable file
14
rugwebsite/templates/rugwebsite/gdpr_delete.html
Executable file
@ -0,0 +1,14 @@
|
||||
{% extends "rugwebsite/base.html" %}
|
||||
|
||||
{% load static %}
|
||||
|
||||
|
||||
{% block content %}
|
||||
<h1>Uw persoonsgegevens zijn verwijderd</h1>
|
||||
|
||||
<p>
|
||||
Uw versoonsgegevens zijn verwijdert. Als u opnieuw inlogt, worden uw gegevens opnieuw opgehaald uit de centrale
|
||||
RUG administratie en krijgt u een nieuw account.
|
||||
</p>
|
||||
|
||||
{% endblock content %}
|
38
rugwebsite/templates/rugwebsite/gdpr_request_delete.html
Executable file
38
rugwebsite/templates/rugwebsite/gdpr_request_delete.html
Executable file
@ -0,0 +1,38 @@
|
||||
{% extends "rugwebsite/base.html" %}
|
||||
|
||||
{% load static %}
|
||||
{% load bootstrap4 %}
|
||||
|
||||
|
||||
{% block content %}
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<div class="col-md-4">
|
||||
<h1>GDPR</h1>
|
||||
<p>Persoonsgegevens verwijderen</p>
|
||||
<br/>
|
||||
</div>
|
||||
<div class="col-md-8">
|
||||
<h1>Verzoek tot verwijderen persoonsgegevens</h1>
|
||||
<p>
|
||||
Vul uw e-mail adres in, wij sturen u een e-mail met een link waarmee uw persoonsgegevens verwijderd kunnen worden.
|
||||
</p>
|
||||
<form action="{% url 'gdpr-request-delete' %}" method="post" accept-charset="utf-8" >
|
||||
{% csrf_token %}
|
||||
{% bootstrap_form form %}
|
||||
<button class="btn btn-default" type="submit">Verzoek indienen</button>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{% endblock content%}
|
||||
|
||||
{% block nav %}
|
||||
<div class="rug-nav-item">
|
||||
<a href="{% url 'gdpr' %}">GDPR</a>
|
||||
</div>
|
||||
<div class="rug-nav-item rug-nav-item-active">
|
||||
<a href="{% url 'gdpr-request-delete' %}">Verwijderverzoek</a>
|
||||
</div>
|
||||
{% endblock %}
|
26
rugwebsite/templates/rugwebsite/gdpr_request_delete_successful.html
Executable file
26
rugwebsite/templates/rugwebsite/gdpr_request_delete_successful.html
Executable file
@ -0,0 +1,26 @@
|
||||
{% extends "rugwebsite/base.html" %}
|
||||
|
||||
{% load static %}
|
||||
|
||||
{% block nav %}
|
||||
<div class="rug-nav-item">
|
||||
<a href="{% url 'gdpr' %}">GDPR</a>
|
||||
</div>
|
||||
<div class="rug-nav-item rug-nav-item-active">
|
||||
<a href="{% url 'gdpr-request-delete' %}">Verwijderverzoek</a>
|
||||
</div>
|
||||
{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
<h1>Verzoek tot verwijderen persoonsgegevens</h1>
|
||||
|
||||
<p>
|
||||
{% if found %}
|
||||
We hebben een e-mail verstuurd waarmee u uw persoonsgegevens kunt verwijderen.
|
||||
{% else %}
|
||||
We hebben geen account met dat adres, probeer het nogmaals. <br/>
|
||||
<a href="{% url 'gdpr-request-delete' %}">Nogmaals proberen</a>.
|
||||
{% endif %}
|
||||
</p>
|
||||
|
||||
{% endblock content %}
|
@ -1,9 +1,10 @@
|
||||
from django.conf.urls import include, url
|
||||
import django_saml2_pro_auth.urls as saml_urls
|
||||
from rugwebsite.views import home
|
||||
|
||||
from rugwebsite.views import home, gdpr, request_gdpr_delete
|
||||
|
||||
urlpatterns = [
|
||||
url(r'gdpr/$', gdpr, name='gdpr'),
|
||||
url(r'gdpr-forget-me/$', request_gdpr_delete, name='gdpr-forget-me'),
|
||||
url(r'', include(saml_urls, namespace='saml')),
|
||||
url(r'$', home),
|
||||
]
|
||||
|
@ -1,8 +1,79 @@
|
||||
from django.contrib.auth.decorators import login_required
|
||||
from django.contrib.auth.models import User
|
||||
from django.shortcuts import render
|
||||
|
||||
from rugwebsite.forms import RequestGDPRDelete
|
||||
from rugwebsite.models import PendingGDPRAgree, GDPRAgreed, PendingGDPRDelete
|
||||
|
||||
from django.utils.crypto import get_random_string
|
||||
|
||||
|
||||
def home(request):
|
||||
return render(request, 'rugwebsite/home.html', {'shownav': True})
|
||||
|
||||
|
||||
return render(request, 'rugwebsite/home.html', {
|
||||
def gdpr(request):
|
||||
return render(request, 'rugwebsite/gdpr.html', {'show_agree_button': False, 'shownav': True})
|
||||
|
||||
})
|
||||
|
||||
@login_required
|
||||
def gdpr_ask_agreement(request):
|
||||
if not request.user.is_superuser:
|
||||
raise PermissionError()
|
||||
|
||||
for user in User.objects.filter(username='herbert').all():
|
||||
token = get_random_string(length=32)
|
||||
pending = PendingGDPRAgree(user=user, token=token)
|
||||
pending.save()
|
||||
pending.email()
|
||||
return render(request, 'rugwebsite/gdpr.html', {'show_agree_button': False, 'shownav': True})
|
||||
|
||||
|
||||
def gdpr_request_delete(request):
|
||||
if request.method == 'POST':
|
||||
form = RequestGDPRDelete(request.POST)
|
||||
if form.is_valid():
|
||||
users = list(User.objects.filter(email=form.cleaned_data['email']).all())
|
||||
for user in users:
|
||||
token = get_random_string(length=32)
|
||||
pending = PendingGDPRDelete(user=user, token=token)
|
||||
pending.save()
|
||||
pending.email()
|
||||
return render(request, 'rugwebsite/gdpr_request_delete_successful.html', {'shownav': True, 'found': len(users) > 0})
|
||||
else:
|
||||
form = RequestGDPRDelete()
|
||||
|
||||
return render(request, 'rugwebsite/gdpr_request_delete.html', {'form': form, 'shownav': True})
|
||||
|
||||
|
||||
def gdpr_delete(request, email, token):
|
||||
pending = list(PendingGDPRDelete.objects.filter(user__email=email, token=token).all())
|
||||
if len(pending) > 0:
|
||||
for pending in pending:
|
||||
pending.forget(request)
|
||||
return render(request, 'rugwebsite/gdpr_delete.html', {'deleted': True, 'shownav': True})
|
||||
return render(request, 'rugwebsite/gdpr_delete.html', {'deleted': False, 'shownav': True})
|
||||
|
||||
|
||||
def gdpr_agree(request, email, token):
|
||||
if 'agree' not in request.GET:
|
||||
return render(request, 'rugwebsite/gdpr.html', {'show_agree_button': True, 'shownav': True, 'email': email,
|
||||
'token': token})
|
||||
|
||||
result = {
|
||||
'already_agreed': GDPRAgreed.objects.filter(user__email=email).exists(),
|
||||
'show_agree_buttom': False,
|
||||
'shownav': True
|
||||
}
|
||||
|
||||
if not result['already_agreed']:
|
||||
pending = list(PendingGDPRAgree.objects.filter(token=token, user__email=email).all())
|
||||
if len(pending) == 1:
|
||||
pending[0].agree()
|
||||
else:
|
||||
if GDPRAgreed.objects.filter(user__email=email).exists():
|
||||
result['already_agreed'] = True
|
||||
else:
|
||||
result['token_not_found'] = True
|
||||
|
||||
return render(request, 'rugwebsite/gdpr_agree_success.html', result, {'shownav': True})
|
||||
|
Loading…
Reference in New Issue
Block a user