authentik.enterprise.providers.ssf.migrations.0001_initial
1# Generated by Django 5.0.11 on 2025-02-05 16:20 2 3import authentik.lib.utils.time 4import django.contrib.postgres.fields 5import django.db.models.deletion 6import uuid 7from django.db import migrations, models 8 9 10class Migration(migrations.Migration): 11 12 initial = True 13 14 dependencies = [ 15 ("authentik_core", "0042_authenticatedsession_authentik_c_expires_08251d_idx_and_more"), 16 ("authentik_crypto", "0004_alter_certificatekeypair_name"), 17 ("authentik_providers_oauth2", "0027_accesstoken_authentik_p_expires_9f24a5_idx_and_more"), 18 ] 19 20 operations = [ 21 migrations.CreateModel( 22 name="SSFProvider", 23 fields=[ 24 ( 25 "provider_ptr", 26 models.OneToOneField( 27 auto_created=True, 28 on_delete=django.db.models.deletion.CASCADE, 29 parent_link=True, 30 primary_key=True, 31 serialize=False, 32 to="authentik_core.provider", 33 ), 34 ), 35 ( 36 "event_retention", 37 models.TextField( 38 default="days=30", 39 validators=[authentik.lib.utils.time.timedelta_string_validator], 40 ), 41 ), 42 ( 43 "oidc_auth_providers", 44 models.ManyToManyField( 45 blank=True, default=None, to="authentik_providers_oauth2.oauth2provider" 46 ), 47 ), 48 ( 49 "signing_key", 50 models.ForeignKey( 51 help_text="Key used to sign the SSF Events.", 52 on_delete=django.db.models.deletion.CASCADE, 53 to="authentik_crypto.certificatekeypair", 54 verbose_name="Signing Key", 55 ), 56 ), 57 ( 58 "token", 59 models.ForeignKey( 60 default=None, 61 null=True, 62 on_delete=django.db.models.deletion.CASCADE, 63 to="authentik_core.token", 64 ), 65 ), 66 ], 67 options={ 68 "verbose_name": "Shared Signals Framework Provider", 69 "verbose_name_plural": "Shared Signals Framework Providers", 70 "permissions": [("add_stream", "Add stream to SSF provider")], 71 }, 72 bases=("authentik_core.provider",), 73 ), 74 migrations.CreateModel( 75 name="Stream", 76 fields=[ 77 ( 78 "uuid", 79 models.UUIDField( 80 default=uuid.uuid4, editable=False, primary_key=True, serialize=False 81 ), 82 ), 83 ( 84 "delivery_method", 85 models.TextField( 86 choices=[ 87 ( 88 "https://schemas.openid.net/secevent/risc/delivery-method/push", 89 "Risc Push", 90 ), 91 ( 92 "https://schemas.openid.net/secevent/risc/delivery-method/poll", 93 "Risc Poll", 94 ), 95 ] 96 ), 97 ), 98 ("endpoint_url", models.TextField(null=True)), 99 ( 100 "events_requested", 101 django.contrib.postgres.fields.ArrayField( 102 base_field=models.TextField( 103 choices=[ 104 ( 105 "https://schemas.openid.net/secevent/caep/event-type/session-revoked", 106 "Caep Session Revoked", 107 ), 108 ( 109 "https://schemas.openid.net/secevent/caep/event-type/credential-change", 110 "Caep Credential Change", 111 ), 112 ( 113 "https://schemas.openid.net/secevent/ssf/event-type/verification", 114 "Set Verification", 115 ), 116 ] 117 ), 118 default=list, 119 size=None, 120 ), 121 ), 122 ("format", models.TextField()), 123 ( 124 "aud", 125 django.contrib.postgres.fields.ArrayField( 126 base_field=models.TextField(), default=list, size=None 127 ), 128 ), 129 ("iss", models.TextField()), 130 ( 131 "provider", 132 models.ForeignKey( 133 on_delete=django.db.models.deletion.CASCADE, 134 to="authentik_providers_ssf.ssfprovider", 135 ), 136 ), 137 ], 138 options={ 139 "verbose_name": "SSF Stream", 140 "verbose_name_plural": "SSF Streams", 141 "default_permissions": ["change", "delete", "view"], 142 }, 143 ), 144 migrations.CreateModel( 145 name="StreamEvent", 146 fields=[ 147 ("created", models.DateTimeField(auto_now_add=True)), 148 ("last_updated", models.DateTimeField(auto_now=True)), 149 ("expires", models.DateTimeField(default=None, null=True)), 150 ("expiring", models.BooleanField(default=True)), 151 ( 152 "uuid", 153 models.UUIDField( 154 default=uuid.uuid4, editable=False, primary_key=True, serialize=False 155 ), 156 ), 157 ( 158 "status", 159 models.TextField( 160 choices=[ 161 ("pending_new", "Pending New"), 162 ("pending_failed", "Pending Failed"), 163 ("sent", "Sent"), 164 ] 165 ), 166 ), 167 ( 168 "type", 169 models.TextField( 170 choices=[ 171 ( 172 "https://schemas.openid.net/secevent/caep/event-type/session-revoked", 173 "Caep Session Revoked", 174 ), 175 ( 176 "https://schemas.openid.net/secevent/caep/event-type/credential-change", 177 "Caep Credential Change", 178 ), 179 ( 180 "https://schemas.openid.net/secevent/ssf/event-type/verification", 181 "Set Verification", 182 ), 183 ] 184 ), 185 ), 186 ("payload", models.JSONField(default=dict)), 187 ( 188 "stream", 189 models.ForeignKey( 190 on_delete=django.db.models.deletion.CASCADE, 191 to="authentik_providers_ssf.stream", 192 ), 193 ), 194 ], 195 options={ 196 "verbose_name": "SSF Stream Event", 197 "verbose_name_plural": "SSF Stream Events", 198 "ordering": ("-created",), 199 }, 200 ), 201 ]
class
Migration(django.db.migrations.migration.Migration):
11class Migration(migrations.Migration): 12 13 initial = True 14 15 dependencies = [ 16 ("authentik_core", "0042_authenticatedsession_authentik_c_expires_08251d_idx_and_more"), 17 ("authentik_crypto", "0004_alter_certificatekeypair_name"), 18 ("authentik_providers_oauth2", "0027_accesstoken_authentik_p_expires_9f24a5_idx_and_more"), 19 ] 20 21 operations = [ 22 migrations.CreateModel( 23 name="SSFProvider", 24 fields=[ 25 ( 26 "provider_ptr", 27 models.OneToOneField( 28 auto_created=True, 29 on_delete=django.db.models.deletion.CASCADE, 30 parent_link=True, 31 primary_key=True, 32 serialize=False, 33 to="authentik_core.provider", 34 ), 35 ), 36 ( 37 "event_retention", 38 models.TextField( 39 default="days=30", 40 validators=[authentik.lib.utils.time.timedelta_string_validator], 41 ), 42 ), 43 ( 44 "oidc_auth_providers", 45 models.ManyToManyField( 46 blank=True, default=None, to="authentik_providers_oauth2.oauth2provider" 47 ), 48 ), 49 ( 50 "signing_key", 51 models.ForeignKey( 52 help_text="Key used to sign the SSF Events.", 53 on_delete=django.db.models.deletion.CASCADE, 54 to="authentik_crypto.certificatekeypair", 55 verbose_name="Signing Key", 56 ), 57 ), 58 ( 59 "token", 60 models.ForeignKey( 61 default=None, 62 null=True, 63 on_delete=django.db.models.deletion.CASCADE, 64 to="authentik_core.token", 65 ), 66 ), 67 ], 68 options={ 69 "verbose_name": "Shared Signals Framework Provider", 70 "verbose_name_plural": "Shared Signals Framework Providers", 71 "permissions": [("add_stream", "Add stream to SSF provider")], 72 }, 73 bases=("authentik_core.provider",), 74 ), 75 migrations.CreateModel( 76 name="Stream", 77 fields=[ 78 ( 79 "uuid", 80 models.UUIDField( 81 default=uuid.uuid4, editable=False, primary_key=True, serialize=False 82 ), 83 ), 84 ( 85 "delivery_method", 86 models.TextField( 87 choices=[ 88 ( 89 "https://schemas.openid.net/secevent/risc/delivery-method/push", 90 "Risc Push", 91 ), 92 ( 93 "https://schemas.openid.net/secevent/risc/delivery-method/poll", 94 "Risc Poll", 95 ), 96 ] 97 ), 98 ), 99 ("endpoint_url", models.TextField(null=True)), 100 ( 101 "events_requested", 102 django.contrib.postgres.fields.ArrayField( 103 base_field=models.TextField( 104 choices=[ 105 ( 106 "https://schemas.openid.net/secevent/caep/event-type/session-revoked", 107 "Caep Session Revoked", 108 ), 109 ( 110 "https://schemas.openid.net/secevent/caep/event-type/credential-change", 111 "Caep Credential Change", 112 ), 113 ( 114 "https://schemas.openid.net/secevent/ssf/event-type/verification", 115 "Set Verification", 116 ), 117 ] 118 ), 119 default=list, 120 size=None, 121 ), 122 ), 123 ("format", models.TextField()), 124 ( 125 "aud", 126 django.contrib.postgres.fields.ArrayField( 127 base_field=models.TextField(), default=list, size=None 128 ), 129 ), 130 ("iss", models.TextField()), 131 ( 132 "provider", 133 models.ForeignKey( 134 on_delete=django.db.models.deletion.CASCADE, 135 to="authentik_providers_ssf.ssfprovider", 136 ), 137 ), 138 ], 139 options={ 140 "verbose_name": "SSF Stream", 141 "verbose_name_plural": "SSF Streams", 142 "default_permissions": ["change", "delete", "view"], 143 }, 144 ), 145 migrations.CreateModel( 146 name="StreamEvent", 147 fields=[ 148 ("created", models.DateTimeField(auto_now_add=True)), 149 ("last_updated", models.DateTimeField(auto_now=True)), 150 ("expires", models.DateTimeField(default=None, null=True)), 151 ("expiring", models.BooleanField(default=True)), 152 ( 153 "uuid", 154 models.UUIDField( 155 default=uuid.uuid4, editable=False, primary_key=True, serialize=False 156 ), 157 ), 158 ( 159 "status", 160 models.TextField( 161 choices=[ 162 ("pending_new", "Pending New"), 163 ("pending_failed", "Pending Failed"), 164 ("sent", "Sent"), 165 ] 166 ), 167 ), 168 ( 169 "type", 170 models.TextField( 171 choices=[ 172 ( 173 "https://schemas.openid.net/secevent/caep/event-type/session-revoked", 174 "Caep Session Revoked", 175 ), 176 ( 177 "https://schemas.openid.net/secevent/caep/event-type/credential-change", 178 "Caep Credential Change", 179 ), 180 ( 181 "https://schemas.openid.net/secevent/ssf/event-type/verification", 182 "Set Verification", 183 ), 184 ] 185 ), 186 ), 187 ("payload", models.JSONField(default=dict)), 188 ( 189 "stream", 190 models.ForeignKey( 191 on_delete=django.db.models.deletion.CASCADE, 192 to="authentik_providers_ssf.stream", 193 ), 194 ), 195 ], 196 options={ 197 "verbose_name": "SSF Stream Event", 198 "verbose_name_plural": "SSF Stream Events", 199 "ordering": ("-created",), 200 }, 201 ), 202 ]
The base class for all migrations.
Migration files will import this from django.db.migrations.Migration and subclass it as a class called Migration. It will have one or more of the following attributes:
- operations: A list of Operation instances, probably from django.db.migrations.operations
- dependencies: A list of tuples of (app_path, migration_name)
- run_before: A list of tuples of (app_path, migration_name)
- replaces: A list of migration_names
Note that all migrations come out of migrations and into the Loader or Graph as instances, having been initialized with their app label and name.
dependencies =
[('authentik_core', '0042_authenticatedsession_authentik_c_expires_08251d_idx_and_more'), ('authentik_crypto', '0004_alter_certificatekeypair_name'), ('authentik_providers_oauth2', '0027_accesstoken_authentik_p_expires_9f24a5_idx_and_more')]
operations =
[<CreateModel name='SSFProvider', fields=[('provider_ptr', <django.db.models.fields.related.OneToOneField>), ('event_retention', <django.db.models.fields.TextField>), ('oidc_auth_providers', <django.db.models.fields.related.ManyToManyField>), ('signing_key', <django.db.models.fields.related.ForeignKey>), ('token', <django.db.models.fields.related.ForeignKey>)], options={'verbose_name': 'Shared Signals Framework Provider', 'verbose_name_plural': 'Shared Signals Framework Providers', 'permissions': [('add_stream', 'Add stream to SSF provider')]}, bases=('authentik_core.provider',)>, <CreateModel name='Stream', fields=[('uuid', <django.db.models.fields.UUIDField>), ('delivery_method', <django.db.models.fields.TextField>), ('endpoint_url', <django.db.models.fields.TextField>), ('events_requested', <django.contrib.postgres.fields.array.ArrayField>), ('format', <django.db.models.fields.TextField>), ('aud', <django.contrib.postgres.fields.array.ArrayField>), ('iss', <django.db.models.fields.TextField>), ('provider', <django.db.models.fields.related.ForeignKey>)], options={'verbose_name': 'SSF Stream', 'verbose_name_plural': 'SSF Streams', 'default_permissions': ['change', 'delete', 'view']}>, <CreateModel name='StreamEvent', fields=[('created', <django.db.models.fields.DateTimeField>), ('last_updated', <django.db.models.fields.DateTimeField>), ('expires', <django.db.models.fields.DateTimeField>), ('expiring', <django.db.models.fields.BooleanField>), ('uuid', <django.db.models.fields.UUIDField>), ('status', <django.db.models.fields.TextField>), ('type', <django.db.models.fields.TextField>), ('payload', <django.db.models.fields.json.JSONField>), ('stream', <django.db.models.fields.related.ForeignKey>)], options={'verbose_name': 'SSF Stream Event', 'verbose_name_plural': 'SSF Stream Events', 'ordering': ('-created',)}>]