authentik.providers.rac.migrations.0001_squashed_0003_alter_connectiontoken_options_and_more

  1# Generated by Django 5.0.1 on 2024-02-11 19:04
  2
  3import uuid
  4
  5import django.db.models.deletion
  6from django.db import migrations, models
  7
  8import authentik.core.models
  9import authentik.lib.utils.time
 10
 11
 12class Migration(migrations.Migration):
 13
 14    replaces = [
 15        ("authentik_providers_rac", "0001_initial"),
 16        ("authentik_providers_rac", "0002_endpoint_maximum_connections"),
 17        ("authentik_providers_rac", "0003_alter_connectiontoken_options_and_more"),
 18    ]
 19
 20    initial = True
 21
 22    dependencies = [
 23        ("authentik_core", "0032_group_roles"),
 24        ("authentik_policies", "0011_policybinding_failure_result_and_more"),
 25    ]
 26
 27    operations = [
 28        migrations.CreateModel(
 29            name="RACPropertyMapping",
 30            fields=[
 31                (
 32                    "propertymapping_ptr",
 33                    models.OneToOneField(
 34                        auto_created=True,
 35                        on_delete=django.db.models.deletion.CASCADE,
 36                        parent_link=True,
 37                        primary_key=True,
 38                        serialize=False,
 39                        to="authentik_core.propertymapping",
 40                    ),
 41                ),
 42                ("static_settings", models.JSONField(default=dict)),
 43            ],
 44            options={
 45                "verbose_name": "RAC Property Mapping",
 46                "verbose_name_plural": "RAC Property Mappings",
 47            },
 48            bases=("authentik_core.propertymapping",),
 49        ),
 50        migrations.CreateModel(
 51            name="RACProvider",
 52            fields=[
 53                (
 54                    "provider_ptr",
 55                    models.OneToOneField(
 56                        auto_created=True,
 57                        on_delete=django.db.models.deletion.CASCADE,
 58                        parent_link=True,
 59                        primary_key=True,
 60                        serialize=False,
 61                        to="authentik_core.provider",
 62                    ),
 63                ),
 64                ("settings", models.JSONField(default=dict)),
 65                (
 66                    "auth_mode",
 67                    models.TextField(
 68                        choices=[("static", "Static"), ("prompt", "Prompt")], default="prompt"
 69                    ),
 70                ),
 71                (
 72                    "connection_expiry",
 73                    models.TextField(
 74                        default="hours=8",
 75                        help_text="Determines how long a session lasts. Default of 0 means that the sessions lasts until the browser is closed. (Format: hours=-1;minutes=-2;seconds=-3)",
 76                        validators=[authentik.lib.utils.time.timedelta_string_validator],
 77                    ),
 78                ),
 79                (
 80                    "delete_token_on_disconnect",
 81                    models.BooleanField(
 82                        default=False,
 83                        help_text="When set to true, connection tokens will be deleted upon disconnect.",
 84                    ),
 85                ),
 86            ],
 87            options={
 88                "verbose_name": "RAC Provider",
 89                "verbose_name_plural": "RAC Providers",
 90            },
 91            bases=("authentik_core.provider",),
 92        ),
 93        migrations.CreateModel(
 94            name="Endpoint",
 95            fields=[
 96                (
 97                    "policybindingmodel_ptr",
 98                    models.OneToOneField(
 99                        auto_created=True,
100                        on_delete=django.db.models.deletion.CASCADE,
101                        parent_link=True,
102                        primary_key=True,
103                        serialize=False,
104                        to="authentik_policies.policybindingmodel",
105                    ),
106                ),
107                ("name", models.TextField()),
108                ("host", models.TextField()),
109                (
110                    "protocol",
111                    models.TextField(choices=[("rdp", "Rdp"), ("vnc", "Vnc"), ("ssh", "Ssh")]),
112                ),
113                ("settings", models.JSONField(default=dict)),
114                (
115                    "auth_mode",
116                    models.TextField(choices=[("static", "Static"), ("prompt", "Prompt")]),
117                ),
118                (
119                    "property_mappings",
120                    models.ManyToManyField(
121                        blank=True, default=None, to="authentik_core.propertymapping"
122                    ),
123                ),
124                (
125                    "provider",
126                    models.ForeignKey(
127                        on_delete=django.db.models.deletion.CASCADE,
128                        to="authentik_providers_rac.racprovider",
129                    ),
130                ),
131                ("maximum_connections", models.IntegerField(default=1)),
132            ],
133            options={
134                "verbose_name": "RAC Endpoint",
135                "verbose_name_plural": "RAC Endpoints",
136            },
137            bases=("authentik_policies.policybindingmodel", models.Model),
138        ),
139        migrations.CreateModel(
140            name="ConnectionToken",
141            fields=[
142                (
143                    "expires",
144                    models.DateTimeField(default=authentik.core.models.default_token_duration),
145                ),
146                ("expiring", models.BooleanField(default=True)),
147                (
148                    "connection_token_uuid",
149                    models.UUIDField(default=uuid.uuid4, primary_key=True, serialize=False),
150                ),
151                ("token", models.TextField(default=authentik.core.models.default_token_key)),
152                ("settings", models.JSONField(default=dict)),
153                (
154                    "endpoint",
155                    models.ForeignKey(
156                        on_delete=django.db.models.deletion.CASCADE,
157                        to="authentik_providers_rac.endpoint",
158                    ),
159                ),
160                (
161                    "provider",
162                    models.ForeignKey(
163                        on_delete=django.db.models.deletion.CASCADE,
164                        to="authentik_providers_rac.racprovider",
165                    ),
166                ),
167                (
168                    "session",
169                    models.ForeignKey(
170                        on_delete=django.db.models.deletion.CASCADE,
171                        to="authentik_core.authenticatedsession",
172                    ),
173                ),
174            ],
175            options={
176                "abstract": False,
177                "verbose_name": "RAC Connection token",
178                "verbose_name_plural": "RAC Connection tokens",
179            },
180        ),
181    ]
class Migration(django.db.migrations.migration.Migration):
 13class Migration(migrations.Migration):
 14
 15    replaces = [
 16        ("authentik_providers_rac", "0001_initial"),
 17        ("authentik_providers_rac", "0002_endpoint_maximum_connections"),
 18        ("authentik_providers_rac", "0003_alter_connectiontoken_options_and_more"),
 19    ]
 20
 21    initial = True
 22
 23    dependencies = [
 24        ("authentik_core", "0032_group_roles"),
 25        ("authentik_policies", "0011_policybinding_failure_result_and_more"),
 26    ]
 27
 28    operations = [
 29        migrations.CreateModel(
 30            name="RACPropertyMapping",
 31            fields=[
 32                (
 33                    "propertymapping_ptr",
 34                    models.OneToOneField(
 35                        auto_created=True,
 36                        on_delete=django.db.models.deletion.CASCADE,
 37                        parent_link=True,
 38                        primary_key=True,
 39                        serialize=False,
 40                        to="authentik_core.propertymapping",
 41                    ),
 42                ),
 43                ("static_settings", models.JSONField(default=dict)),
 44            ],
 45            options={
 46                "verbose_name": "RAC Property Mapping",
 47                "verbose_name_plural": "RAC Property Mappings",
 48            },
 49            bases=("authentik_core.propertymapping",),
 50        ),
 51        migrations.CreateModel(
 52            name="RACProvider",
 53            fields=[
 54                (
 55                    "provider_ptr",
 56                    models.OneToOneField(
 57                        auto_created=True,
 58                        on_delete=django.db.models.deletion.CASCADE,
 59                        parent_link=True,
 60                        primary_key=True,
 61                        serialize=False,
 62                        to="authentik_core.provider",
 63                    ),
 64                ),
 65                ("settings", models.JSONField(default=dict)),
 66                (
 67                    "auth_mode",
 68                    models.TextField(
 69                        choices=[("static", "Static"), ("prompt", "Prompt")], default="prompt"
 70                    ),
 71                ),
 72                (
 73                    "connection_expiry",
 74                    models.TextField(
 75                        default="hours=8",
 76                        help_text="Determines how long a session lasts. Default of 0 means that the sessions lasts until the browser is closed. (Format: hours=-1;minutes=-2;seconds=-3)",
 77                        validators=[authentik.lib.utils.time.timedelta_string_validator],
 78                    ),
 79                ),
 80                (
 81                    "delete_token_on_disconnect",
 82                    models.BooleanField(
 83                        default=False,
 84                        help_text="When set to true, connection tokens will be deleted upon disconnect.",
 85                    ),
 86                ),
 87            ],
 88            options={
 89                "verbose_name": "RAC Provider",
 90                "verbose_name_plural": "RAC Providers",
 91            },
 92            bases=("authentik_core.provider",),
 93        ),
 94        migrations.CreateModel(
 95            name="Endpoint",
 96            fields=[
 97                (
 98                    "policybindingmodel_ptr",
 99                    models.OneToOneField(
100                        auto_created=True,
101                        on_delete=django.db.models.deletion.CASCADE,
102                        parent_link=True,
103                        primary_key=True,
104                        serialize=False,
105                        to="authentik_policies.policybindingmodel",
106                    ),
107                ),
108                ("name", models.TextField()),
109                ("host", models.TextField()),
110                (
111                    "protocol",
112                    models.TextField(choices=[("rdp", "Rdp"), ("vnc", "Vnc"), ("ssh", "Ssh")]),
113                ),
114                ("settings", models.JSONField(default=dict)),
115                (
116                    "auth_mode",
117                    models.TextField(choices=[("static", "Static"), ("prompt", "Prompt")]),
118                ),
119                (
120                    "property_mappings",
121                    models.ManyToManyField(
122                        blank=True, default=None, to="authentik_core.propertymapping"
123                    ),
124                ),
125                (
126                    "provider",
127                    models.ForeignKey(
128                        on_delete=django.db.models.deletion.CASCADE,
129                        to="authentik_providers_rac.racprovider",
130                    ),
131                ),
132                ("maximum_connections", models.IntegerField(default=1)),
133            ],
134            options={
135                "verbose_name": "RAC Endpoint",
136                "verbose_name_plural": "RAC Endpoints",
137            },
138            bases=("authentik_policies.policybindingmodel", models.Model),
139        ),
140        migrations.CreateModel(
141            name="ConnectionToken",
142            fields=[
143                (
144                    "expires",
145                    models.DateTimeField(default=authentik.core.models.default_token_duration),
146                ),
147                ("expiring", models.BooleanField(default=True)),
148                (
149                    "connection_token_uuid",
150                    models.UUIDField(default=uuid.uuid4, primary_key=True, serialize=False),
151                ),
152                ("token", models.TextField(default=authentik.core.models.default_token_key)),
153                ("settings", models.JSONField(default=dict)),
154                (
155                    "endpoint",
156                    models.ForeignKey(
157                        on_delete=django.db.models.deletion.CASCADE,
158                        to="authentik_providers_rac.endpoint",
159                    ),
160                ),
161                (
162                    "provider",
163                    models.ForeignKey(
164                        on_delete=django.db.models.deletion.CASCADE,
165                        to="authentik_providers_rac.racprovider",
166                    ),
167                ),
168                (
169                    "session",
170                    models.ForeignKey(
171                        on_delete=django.db.models.deletion.CASCADE,
172                        to="authentik_core.authenticatedsession",
173                    ),
174                ),
175            ],
176            options={
177                "abstract": False,
178                "verbose_name": "RAC Connection token",
179                "verbose_name_plural": "RAC Connection tokens",
180            },
181        ),
182    ]

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.

replaces = [('authentik_providers_rac', '0001_initial'), ('authentik_providers_rac', '0002_endpoint_maximum_connections'), ('authentik_providers_rac', '0003_alter_connectiontoken_options_and_more')]
initial = True
dependencies = [('authentik_core', '0032_group_roles'), ('authentik_policies', '0011_policybinding_failure_result_and_more')]
operations = [<CreateModel name='RACPropertyMapping', fields=[('propertymapping_ptr', <django.db.models.fields.related.OneToOneField>), ('static_settings', <django.db.models.fields.json.JSONField>)], options={'verbose_name': 'RAC Property Mapping', 'verbose_name_plural': 'RAC Property Mappings'}, bases=('authentik_core.propertymapping',)>, <CreateModel name='RACProvider', fields=[('provider_ptr', <django.db.models.fields.related.OneToOneField>), ('settings', <django.db.models.fields.json.JSONField>), ('auth_mode', <django.db.models.fields.TextField>), ('connection_expiry', <django.db.models.fields.TextField>), ('delete_token_on_disconnect', <django.db.models.fields.BooleanField>)], options={'verbose_name': 'RAC Provider', 'verbose_name_plural': 'RAC Providers'}, bases=('authentik_core.provider',)>, <CreateModel name='Endpoint', fields=[('policybindingmodel_ptr', <django.db.models.fields.related.OneToOneField>), ('name', <django.db.models.fields.TextField>), ('host', <django.db.models.fields.TextField>), ('protocol', <django.db.models.fields.TextField>), ('settings', <django.db.models.fields.json.JSONField>), ('auth_mode', <django.db.models.fields.TextField>), ('property_mappings', <django.db.models.fields.related.ManyToManyField>), ('provider', <django.db.models.fields.related.ForeignKey>), ('maximum_connections', <django.db.models.fields.IntegerField>)], options={'verbose_name': 'RAC Endpoint', 'verbose_name_plural': 'RAC Endpoints'}, bases=('authentik_policies.policybindingmodel', <class 'django.db.models.base.Model'>)>, <CreateModel name='ConnectionToken', fields=[('expires', <django.db.models.fields.DateTimeField>), ('expiring', <django.db.models.fields.BooleanField>), ('connection_token_uuid', <django.db.models.fields.UUIDField>), ('token', <django.db.models.fields.TextField>), ('settings', <django.db.models.fields.json.JSONField>), ('endpoint', <django.db.models.fields.related.ForeignKey>), ('provider', <django.db.models.fields.related.ForeignKey>), ('session', <django.db.models.fields.related.ForeignKey>)], options={'abstract': False, 'verbose_name': 'RAC Connection token', 'verbose_name_plural': 'RAC Connection tokens'}>]