From ba312afc3e9e293488deb2cc68004c347a3eab58 Mon Sep 17 00:00:00 2001 From: Benjamin Dauvergne Date: Tue, 14 Sep 2021 20:54:18 +0200 Subject: [PATCH] add Issuer model (#56819) --- mellon/migrations/0003_add_issuer_model.py | 47 ++++++++++++++++++++++ mellon/models.py | 14 ++++++- 2 files changed, 60 insertions(+), 1 deletion(-) create mode 100644 mellon/migrations/0003_add_issuer_model.py diff --git a/mellon/migrations/0003_add_issuer_model.py b/mellon/migrations/0003_add_issuer_model.py new file mode 100644 index 0000000..d2fe5aa --- /dev/null +++ b/mellon/migrations/0003_add_issuer_model.py @@ -0,0 +1,47 @@ +# Generated by Django 2.2.19 on 2021-09-14 18:53 + +import django.db.models.deletion +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('mellon', '0002_sessionindex'), + ] + + operations = [ + migrations.CreateModel( + name='Issuer', + fields=[ + ( + 'id', + models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID'), + ), + ( + 'entity_id', + models.TextField(unique=True, verbose_name='IdP Entity ID'), + ), + ('slug', models.TextField(null=True, unique=True, verbose_name='IdP slug')), + ], + options={ + 'verbose_name': 'SAML IdP', + 'verbose_name_plural': 'SAML IdPs', + }, + ), + migrations.AlterField( + model_name='usersamlidentifier', + name='issuer', + field=models.TextField(null=True, verbose_name='Issuer'), + ), + migrations.AddField( + model_name='usersamlidentifier', + name='issuer_fk', + field=models.ForeignKey( + null=True, + on_delete=django.db.models.deletion.CASCADE, + to='mellon.Issuer', + verbose_name='Issuer', + ), + ), + ] diff --git a/mellon/models.py b/mellon/models.py index 740487c..1b85825 100644 --- a/mellon/models.py +++ b/mellon/models.py @@ -28,9 +28,12 @@ class UserSAMLIdentifier(models.Model): related_name='saml_identifiers', on_delete=models.CASCADE, ) - issuer = models.TextField(verbose_name=_('Issuer')) + issuer = models.TextField(verbose_name=_('Issuer'), null=True) name_id = models.TextField(verbose_name=_('SAML identifier')) created = models.DateTimeField(verbose_name=_('created'), auto_now_add=True) + issuer_fk = models.ForeignKey( + 'mellon.Issuer', verbose_name=_('Issuer'), null=True, on_delete=models.CASCADE + ) class Meta: verbose_name = _('user SAML identifier') @@ -60,3 +63,12 @@ class SessionIndex(models.Model): verbose_name = _('SAML SessionIndex') verbose_name_plural = _('SAML SessionIndexes') unique_together = (('saml_identifier', 'session_index', 'session_key'),) + + +class Issuer(models.Model): + entity_id = models.TextField(verbose_name=_('IdP Entity ID'), unique=True) + slug = models.TextField(verbose_name=_('IdP slug'), unique=True, null=True) + + class Meta: + verbose_name = _('SAML IdP') + verbose_name_plural = _('SAML IdPs')