diff --git a/oauth2_provider/migrations/0001_initial.py b/oauth2_provider/migrations/0001_initial.py index 1d1a38e0e..6da0d2bc8 100644 --- a/oauth2_provider/migrations/0001_initial.py +++ b/oauth2_provider/migrations/0001_initial.py @@ -1,41 +1,33 @@ -from django.conf import settings -import django.db.models.deletion -from django.db import migrations, models +# -*- coding: utf-8 -*- +from __future__ import unicode_literals -import oauth2_provider.generators -import oauth2_provider.validators from oauth2_provider.settings import oauth2_settings +from django.db import models, migrations +import oauth2_provider.validators +import oauth2_provider.generators +from django.conf import settings class Migration(migrations.Migration): - """ - The following migrations are squashed here: - - 0001_initial.py - - 0002_08_updates.py - - 0003_auto_20160316_1503.py - - 0004_auto_20160525_1623.py - - 0005_auto_20170514_1141.py - - 0006_auto_20171214_2232.py - """ + dependencies = [ - migrations.swappable_dependency(settings.AUTH_USER_MODEL) + migrations.swappable_dependency(settings.AUTH_USER_MODEL), + migrations.swappable_dependency(oauth2_settings.APPLICATION_MODEL), ] operations = [ migrations.CreateModel( name='Application', fields=[ - ('id', models.BigAutoField(serialize=False, primary_key=True)), + ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), ('client_id', models.CharField(default=oauth2_provider.generators.generate_client_id, unique=True, max_length=100, db_index=True)), ('redirect_uris', models.TextField(help_text='Allowed URIs list, space separated', blank=True)), ('client_type', models.CharField(max_length=32, choices=[('confidential', 'Confidential'), ('public', 'Public')])), ('authorization_grant_type', models.CharField(max_length=32, choices=[('authorization-code', 'Authorization code'), ('implicit', 'Implicit'), ('password', 'Resource owner password-based'), ('client-credentials', 'Client credentials')])), ('client_secret', models.CharField(default=oauth2_provider.generators.generate_client_secret, max_length=255, db_index=True, blank=True)), ('name', models.CharField(max_length=255, blank=True)), - ('user', models.ForeignKey(related_name="oauth2_provider_application", blank=True, to=settings.AUTH_USER_MODEL, null=True, on_delete=models.CASCADE)), ('skip_authorization', models.BooleanField(default=False)), - ('created', models.DateTimeField(auto_now_add=True)), - ('updated', models.DateTimeField(auto_now=True)), + ('user', models.ForeignKey(to=settings.AUTH_USER_MODEL, on_delete=models.CASCADE)), ], options={ 'abstract': False, @@ -45,61 +37,34 @@ class Migration(migrations.Migration): migrations.CreateModel( name='AccessToken', fields=[ - ('id', models.BigAutoField(serialize=False, primary_key=True)), - ('token', models.CharField(unique=True, max_length=255)), + ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), + ('token', models.CharField(max_length=255, db_index=True)), ('expires', models.DateTimeField()), ('scope', models.TextField(blank=True)), - ('application', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to=oauth2_settings.APPLICATION_MODEL)), - ('user', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='oauth2_provider_accesstoken', to=settings.AUTH_USER_MODEL)), - ('created', models.DateTimeField(auto_now_add=True)), - ('updated', models.DateTimeField(auto_now=True)), - # Circular reference. Can't add it here. - #('source_refresh_token', models.OneToOneField(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to=oauth2_settings.REFRESH_TOKEN_MODEL, related_name="refreshed_access_token")), + ('application', models.ForeignKey(to=oauth2_settings.APPLICATION_MODEL, on_delete=models.CASCADE)), + ('user', models.ForeignKey(to=settings.AUTH_USER_MODEL, on_delete=models.CASCADE)), ], - options={ - 'abstract': False, - 'swappable': 'OAUTH2_PROVIDER_ACCESS_TOKEN_MODEL', - }, ), migrations.CreateModel( name='Grant', fields=[ - ('id', models.BigAutoField(serialize=False, primary_key=True)), - ('code', models.CharField(unique=True, max_length=255)), + ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), + ('code', models.CharField(max_length=255, db_index=True)), ('expires', models.DateTimeField()), ('redirect_uri', models.CharField(max_length=255)), ('scope', models.TextField(blank=True)), ('application', models.ForeignKey(to=oauth2_settings.APPLICATION_MODEL, on_delete=models.CASCADE)), - ('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='oauth2_provider_grant', to=settings.AUTH_USER_MODEL)), - ('created', models.DateTimeField(auto_now_add=True)), - ('updated', models.DateTimeField(auto_now=True)), + ('user', models.ForeignKey(to=settings.AUTH_USER_MODEL, on_delete=models.CASCADE)), ], - options={ - 'abstract': False, - 'swappable': 'OAUTH2_PROVIDER_GRANT_MODEL', - }, ), migrations.CreateModel( name='RefreshToken', fields=[ - ('id', models.BigAutoField(serialize=False, primary_key=True)), - ('token', models.CharField(max_length=255)), - ('access_token', models.OneToOneField(blank=True, null=True, related_name="refresh_token", to=oauth2_settings.ACCESS_TOKEN_MODEL, on_delete=models.SET_NULL)), + ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), + ('token', models.CharField(max_length=255, db_index=True)), + ('access_token', models.OneToOneField(related_name='refresh_token', to='oauth2_provider.AccessToken', on_delete=models.CASCADE)), ('application', models.ForeignKey(to=oauth2_settings.APPLICATION_MODEL, on_delete=models.CASCADE)), - ('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='oauth2_provider_refreshtoken', to=settings.AUTH_USER_MODEL)), - ('created', models.DateTimeField(auto_now_add=True)), - ('updated', models.DateTimeField(auto_now=True)), - ('revoked', models.DateTimeField(null=True)), + ('user', models.ForeignKey(to=settings.AUTH_USER_MODEL, on_delete=models.CASCADE)), ], - options={ - 'abstract': False, - 'swappable': 'OAUTH2_PROVIDER_REFRESH_TOKEN_MODEL', - 'unique_together': set([("token", "revoked")]), - }, - ), - migrations.AddField( - model_name='AccessToken', - name='source_refresh_token', - field=models.OneToOneField(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to=oauth2_settings.REFRESH_TOKEN_MODEL, related_name="refreshed_access_token"), ), ] diff --git a/oauth2_provider/migrations/0002_08_updates.py b/oauth2_provider/migrations/0002_08_updates.py new file mode 100644 index 000000000..eecf52352 --- /dev/null +++ b/oauth2_provider/migrations/0002_08_updates.py @@ -0,0 +1,30 @@ +# -*- coding: utf-8 -*- +from __future__ import unicode_literals + +from oauth2_provider.settings import oauth2_settings +from django.db import models, migrations +import oauth2_provider.validators +import oauth2_provider.generators +from django.conf import settings + + +class Migration(migrations.Migration): + + dependencies = [ + ('oauth2_provider', '0001_initial'), + ] + + operations = [ + migrations.AlterField( + model_name='Application', + name='user', + field=models.ForeignKey(related_name='oauth2_provider_application', to=settings.AUTH_USER_MODEL, on_delete=models.CASCADE), + preserve_default=True, + ), + migrations.AlterField( + model_name='AccessToken', + name='user', + field=models.ForeignKey(blank=True, to=settings.AUTH_USER_MODEL, null=True, on_delete=models.CASCADE), + preserve_default=True, + ), + ] diff --git a/oauth2_provider/migrations/0002_auto_20190406_1805.py b/oauth2_provider/migrations/0002_auto_20190406_1805.py deleted file mode 100644 index 8ca177abf..000000000 --- a/oauth2_provider/migrations/0002_auto_20190406_1805.py +++ /dev/null @@ -1,23 +0,0 @@ -# Generated by Django 2.2 on 2019-04-06 18:05 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('oauth2_provider', '0001_initial'), - ] - - operations = [ - migrations.AddField( - model_name='grant', - name='code_challenge', - field=models.CharField(blank=True, default='', max_length=128), - ), - migrations.AddField( - model_name='grant', - name='code_challenge_method', - field=models.CharField(blank=True, choices=[('plain', 'plain'), ('S256', 'S256')], default='', max_length=10), - ), - ] diff --git a/oauth2_provider/migrations/0003_auto_20160316_1503.py b/oauth2_provider/migrations/0003_auto_20160316_1503.py new file mode 100644 index 000000000..49cfb4b29 --- /dev/null +++ b/oauth2_provider/migrations/0003_auto_20160316_1503.py @@ -0,0 +1,20 @@ +# -*- coding: utf-8 -*- +from __future__ import unicode_literals + +from django.db import migrations, models +from django.conf import settings + + +class Migration(migrations.Migration): + + dependencies = [ + ('oauth2_provider', '0002_08_updates'), + ] + + operations = [ + migrations.AlterField( + model_name='application', + name='user', + field=models.ForeignKey(related_name='oauth2_provider_application', blank=True, to=settings.AUTH_USER_MODEL, null=True, on_delete=models.CASCADE), + ), + ] diff --git a/oauth2_provider/migrations/0003_auto_20201211_1314.py b/oauth2_provider/migrations/0003_auto_20201211_1314.py deleted file mode 100644 index 2787d51a3..000000000 --- a/oauth2_provider/migrations/0003_auto_20201211_1314.py +++ /dev/null @@ -1,18 +0,0 @@ -# Generated by Django 3.1.4 on 2020-12-11 13:14 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('oauth2_provider', '0002_auto_20190406_1805'), - ] - - operations = [ - migrations.AlterField( - model_name='grant', - name='redirect_uri', - field=models.TextField(), - ), - ] diff --git a/oauth2_provider/migrations/0004_auto_20160525_1623.py b/oauth2_provider/migrations/0004_auto_20160525_1623.py new file mode 100644 index 000000000..5ada5dbb4 --- /dev/null +++ b/oauth2_provider/migrations/0004_auto_20160525_1623.py @@ -0,0 +1,29 @@ +# -*- coding: utf-8 -*- +from __future__ import unicode_literals + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('oauth2_provider', '0003_auto_20160316_1503'), + ] + + operations = [ + migrations.AlterField( + model_name='accesstoken', + name='token', + field=models.CharField(unique=True, max_length=255), + ), + migrations.AlterField( + model_name='grant', + name='code', + field=models.CharField(unique=True, max_length=255), + ), + migrations.AlterField( + model_name='refreshtoken', + name='token', + field=models.CharField(unique=True, max_length=255), + ), + ] diff --git a/oauth2_provider/migrations/0004_auto_20200902_2022.py b/oauth2_provider/migrations/0004_auto_20200902_2022.py deleted file mode 100644 index 81dd20d04..000000000 --- a/oauth2_provider/migrations/0004_auto_20200902_2022.py +++ /dev/null @@ -1,60 +0,0 @@ -import uuid - -from django.conf import settings -from django.db import migrations, models -import django.db.models.deletion - -from oauth2_provider.settings import oauth2_settings - - -class Migration(migrations.Migration): - - dependencies = [ - migrations.swappable_dependency(settings.AUTH_USER_MODEL), - ('oauth2_provider', '0003_auto_20201211_1314'), - ] - - operations = [ - migrations.AddField( - model_name='application', - name='algorithm', - field=models.CharField(blank=True, choices=[("", "No OIDC support"), ('RS256', 'RSA with SHA-2 256'), ('HS256', 'HMAC with SHA-2 256')], default='', max_length=5), - ), - migrations.AlterField( - model_name='application', - name='authorization_grant_type', - field=models.CharField(choices=[('authorization-code', 'Authorization code'), ('implicit', 'Implicit'), ('password', 'Resource owner password-based'), ('client-credentials', 'Client credentials'), ('openid-hybrid', 'OpenID connect hybrid')], max_length=32), - ), - migrations.CreateModel( - name='IDToken', - fields=[ - ('id', models.BigAutoField(primary_key=True, serialize=False)), - ("jti", models.UUIDField(unique=True, default=uuid.uuid4, editable=False, verbose_name="JWT Token ID")), - ('expires', models.DateTimeField()), - ('scope', models.TextField(blank=True)), - ('created', models.DateTimeField(auto_now_add=True)), - ('updated', models.DateTimeField(auto_now=True)), - ('application', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to=oauth2_settings.APPLICATION_MODEL)), - ('user', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='oauth2_provider_idtoken', to=settings.AUTH_USER_MODEL)), - ], - options={ - 'abstract': False, - 'swappable': 'OAUTH2_PROVIDER_ID_TOKEN_MODEL', - }, - ), - migrations.AddField( - model_name='accesstoken', - name='id_token', - field=models.OneToOneField(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='access_token', to=oauth2_settings.ID_TOKEN_MODEL), - ), - migrations.AddField( - model_name="grant", - name="nonce", - field=models.CharField(blank=True, max_length=255, default=""), - ), - migrations.AddField( - model_name="grant", - name="claims", - field=models.TextField(blank=True), - ), - ] diff --git a/oauth2_provider/migrations/0005_accesstoken_created_accesstoken_source_refresh_token_and_more.py b/oauth2_provider/migrations/0005_accesstoken_created_accesstoken_source_refresh_token_and_more.py new file mode 100644 index 000000000..d39ca7a79 --- /dev/null +++ b/oauth2_provider/migrations/0005_accesstoken_created_accesstoken_source_refresh_token_and_more.py @@ -0,0 +1,215 @@ +# Generated by Django 4.2.16 on 2024-12-02 10:22 + +from django.conf import settings +from django.db import migrations, models +import django.db.models.deletion +import django.utils.timezone +import oauth2_provider.generators +import oauth2_provider.models +import uuid + + +class Migration(migrations.Migration): + + dependencies = [ + migrations.swappable_dependency(settings.AUTH_USER_MODEL), + ('oauth2_provider', '0004_auto_20160525_1623'), + ] + + operations = [ + migrations.AddField( + model_name='accesstoken', + name='created', + field=models.DateTimeField(auto_now_add=True, default=django.utils.timezone.now), + preserve_default=False, + ), + migrations.AddField( + model_name='accesstoken', + name='source_refresh_token', + field=models.OneToOneField(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='refreshed_access_token', to=settings.OAUTH2_PROVIDER_REFRESH_TOKEN_MODEL), + ), + migrations.AddField( + model_name='accesstoken', + name='updated', + field=models.DateTimeField(auto_now=True), + ), + migrations.AddField( + model_name='application', + name='algorithm', + field=models.CharField(blank=True, choices=[('', 'No OIDC support'), ('RS256', 'RSA with SHA-2 256'), ('HS256', 'HMAC with SHA-2 256')], default='', max_length=5), + ), + migrations.AddField( + model_name='application', + name='allowed_origins', + field=models.TextField(blank=True, default='', help_text='Allowed origins list to enable CORS, space separated'), + ), + migrations.AddField( + model_name='application', + name='created', + field=models.DateTimeField(auto_now_add=True, default=django.utils.timezone.now), + preserve_default=False, + ), + migrations.AddField( + model_name='application', + name='hash_client_secret', + field=models.BooleanField(default=True), + ), + migrations.AddField( + model_name='application', + name='post_logout_redirect_uris', + field=models.TextField(blank=True, default='', help_text='Allowed Post Logout URIs list, space separated'), + ), + migrations.AddField( + model_name='application', + name='updated', + field=models.DateTimeField(auto_now=True), + ), + migrations.AddField( + model_name='grant', + name='claims', + field=models.TextField(blank=True), + ), + migrations.AddField( + model_name='grant', + name='code_challenge', + field=models.CharField(blank=True, default='', max_length=128), + ), + migrations.AddField( + model_name='grant', + name='code_challenge_method', + field=models.CharField(blank=True, choices=[('plain', 'plain'), ('S256', 'S256')], default='', max_length=10), + ), + migrations.AddField( + model_name='grant', + name='created', + field=models.DateTimeField(auto_now_add=True, default=django.utils.timezone.now), + preserve_default=False, + ), + migrations.AddField( + model_name='grant', + name='nonce', + field=models.CharField(blank=True, default='', max_length=255), + ), + migrations.AddField( + model_name='grant', + name='updated', + field=models.DateTimeField(auto_now=True), + ), + migrations.AddField( + model_name='refreshtoken', + name='created', + field=models.DateTimeField(auto_now_add=True, default=django.utils.timezone.now), + preserve_default=False, + ), + migrations.AddField( + model_name='refreshtoken', + name='revoked', + field=models.DateTimeField(null=True), + ), + migrations.AddField( + model_name='refreshtoken', + name='updated', + field=models.DateTimeField(auto_now=True), + ), + migrations.AlterField( + model_name='accesstoken', + name='application', + field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to=settings.OAUTH2_PROVIDER_APPLICATION_MODEL), + ), + migrations.AlterField( + model_name='accesstoken', + name='id', + field=models.BigAutoField(primary_key=True, serialize=False), + ), + migrations.AlterField( + model_name='accesstoken', + name='token', + field=models.CharField(db_index=True, max_length=255, unique=True), + ), + migrations.AlterField( + model_name='accesstoken', + name='user', + field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='%(app_label)s_%(class)s', to=settings.AUTH_USER_MODEL), + ), + migrations.AlterField( + model_name='application', + name='authorization_grant_type', + field=models.CharField(choices=[('authorization-code', 'Authorization code'), ('implicit', 'Implicit'), ('password', 'Resource owner password-based'), ('client-credentials', 'Client credentials'), ('openid-hybrid', 'OpenID connect hybrid')], max_length=32), + ), + migrations.AlterField( + model_name='application', + name='client_secret', + field=oauth2_provider.models.ClientSecretField(blank=True, db_index=True, default=oauth2_provider.generators.generate_client_secret, help_text='Hashed on Save. Copy it now if this is a new secret.', max_length=255), + ), + migrations.AlterField( + model_name='application', + name='id', + field=models.BigAutoField(primary_key=True, serialize=False), + ), + migrations.AlterField( + model_name='application', + name='user', + field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='%(app_label)s_%(class)s', to=settings.AUTH_USER_MODEL), + ), + migrations.AlterField( + model_name='grant', + name='id', + field=models.BigAutoField(primary_key=True, serialize=False), + ), + migrations.AlterField( + model_name='grant', + name='redirect_uri', + field=models.TextField(), + ), + migrations.AlterField( + model_name='grant', + name='user', + field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='%(app_label)s_%(class)s', to=settings.AUTH_USER_MODEL), + ), + migrations.AlterField( + model_name='refreshtoken', + name='access_token', + field=models.OneToOneField(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='refresh_token', to=settings.OAUTH2_PROVIDER_ACCESS_TOKEN_MODEL), + ), + migrations.AlterField( + model_name='refreshtoken', + name='id', + field=models.BigAutoField(primary_key=True, serialize=False), + ), + migrations.AlterField( + model_name='refreshtoken', + name='token', + field=models.CharField(max_length=255), + ), + migrations.AlterField( + model_name='refreshtoken', + name='user', + field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='%(app_label)s_%(class)s', to=settings.AUTH_USER_MODEL), + ), + migrations.AlterUniqueTogether( + name='refreshtoken', + unique_together={('token', 'revoked')}, + ), + migrations.CreateModel( + name='IDToken', + fields=[ + ('id', models.BigAutoField(primary_key=True, serialize=False)), + ('jti', models.UUIDField(default=uuid.uuid4, editable=False, unique=True, verbose_name='JWT Token ID')), + ('expires', models.DateTimeField()), + ('scope', models.TextField(blank=True)), + ('created', models.DateTimeField(auto_now_add=True)), + ('updated', models.DateTimeField(auto_now=True)), + ('application', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to=settings.OAUTH2_PROVIDER_APPLICATION_MODEL)), + ('user', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='%(app_label)s_%(class)s', to=settings.AUTH_USER_MODEL)), + ], + options={ + 'abstract': False, + 'swappable': 'OAUTH2_PROVIDER_ID_TOKEN_MODEL', + }, + ), + migrations.AddField( + model_name='accesstoken', + name='id_token', + field=models.OneToOneField(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='access_token', to=settings.OAUTH2_PROVIDER_ID_TOKEN_MODEL), + ), + ] diff --git a/oauth2_provider/migrations/0005_auto_20211222_2352.py b/oauth2_provider/migrations/0005_auto_20211222_2352.py deleted file mode 100644 index ebff59f80..000000000 --- a/oauth2_provider/migrations/0005_auto_20211222_2352.py +++ /dev/null @@ -1,39 +0,0 @@ -import django.db.models.deletion -from django.conf import settings -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - migrations.swappable_dependency(settings.AUTH_USER_MODEL), - ('oauth2_provider', '0004_auto_20200902_2022'), - ] - - operations = [ - migrations.AlterField( - model_name='accesstoken', - name='user', - field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='%(app_label)s_%(class)s', to=settings.AUTH_USER_MODEL), - ), - migrations.AlterField( - model_name='application', - name='user', - field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='%(app_label)s_%(class)s', to=settings.AUTH_USER_MODEL), - ), - migrations.AlterField( - model_name='grant', - name='user', - field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='%(app_label)s_%(class)s', to=settings.AUTH_USER_MODEL), - ), - migrations.AlterField( - model_name='idtoken', - name='user', - field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='%(app_label)s_%(class)s', to=settings.AUTH_USER_MODEL), - ), - migrations.AlterField( - model_name='refreshtoken', - name='user', - field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='%(app_label)s_%(class)s', to=settings.AUTH_USER_MODEL), - ), - ] diff --git a/oauth2_provider/migrations/0006_alter_application_client_secret.py b/oauth2_provider/migrations/0006_alter_application_client_secret.py deleted file mode 100644 index a940c22c9..000000000 --- a/oauth2_provider/migrations/0006_alter_application_client_secret.py +++ /dev/null @@ -1,43 +0,0 @@ -import logging - -from django.db import migrations - -import oauth2_provider.generators -import oauth2_provider.models -from oauth2_provider import settings - - -logger = logging.getLogger() - - -def forwards_func(apps, schema_editor): - """ - Forward migration touches every application.client_secret which will cause it to be hashed if not already the case. - """ - Application = apps.get_model(settings.APPLICATION_MODEL) - applications = Application._default_manager.all() - for application in applications: - application.save(update_fields=['client_secret']) - - -def reverse_func(apps, schema_editor): - warning_color_code = "\033[93m" - end_color_code = "\033[0m" - msg = f"\n{warning_color_code}The previously hashed client_secret cannot be reverted, and it remains hashed{end_color_code}" - logger.warning(msg) - - -class Migration(migrations.Migration): - - dependencies = [ - ('oauth2_provider', '0005_auto_20211222_2352'), - ] - - operations = [ - migrations.AlterField( - model_name='application', - name='client_secret', - field=oauth2_provider.models.ClientSecretField(blank=True, db_index=True, default=oauth2_provider.generators.generate_client_secret, help_text='Hashed on Save. Copy it now if this is a new secret.', max_length=255), - ), - migrations.RunPython(forwards_func, reverse_func), - ] diff --git a/oauth2_provider/migrations/0007_application_post_logout_redirect_uris.py b/oauth2_provider/migrations/0007_application_post_logout_redirect_uris.py deleted file mode 100644 index f4ca37187..000000000 --- a/oauth2_provider/migrations/0007_application_post_logout_redirect_uris.py +++ /dev/null @@ -1,18 +0,0 @@ -# Generated by Django 4.1.5 on 2023-01-14 12:32 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ("oauth2_provider", "0006_alter_application_client_secret"), - ] - - operations = [ - migrations.AddField( - model_name="application", - name="post_logout_redirect_uris", - field=models.TextField(blank=True, help_text="Allowed Post Logout URIs list, space separated", default=""), - ), - ] diff --git a/oauth2_provider/migrations/0008_alter_accesstoken_token.py b/oauth2_provider/migrations/0008_alter_accesstoken_token.py deleted file mode 100644 index 5d3a9ebc8..000000000 --- a/oauth2_provider/migrations/0008_alter_accesstoken_token.py +++ /dev/null @@ -1,17 +0,0 @@ -# Generated by Django 4.2.4 on 2023-09-11 07:03 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - dependencies = [ - ("oauth2_provider", "0007_application_post_logout_redirect_uris"), - ] - - operations = [ - migrations.AlterField( - model_name="accesstoken", - name="token", - field=models.CharField(db_index=True, max_length=255, unique=True), - ), - ] diff --git a/oauth2_provider/migrations/0009_add_hash_client_secret.py b/oauth2_provider/migrations/0009_add_hash_client_secret.py deleted file mode 100644 index 9452bce98..000000000 --- a/oauth2_provider/migrations/0009_add_hash_client_secret.py +++ /dev/null @@ -1,18 +0,0 @@ -# Generated by Django 4.2.5 on 2023-09-07 19:26 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('oauth2_provider', '0008_alter_accesstoken_token'), - ] - - operations = [ - migrations.AddField( - model_name='application', - name='hash_client_secret', - field=models.BooleanField(default=True), - ), - ] diff --git a/oauth2_provider/migrations/0010_application_allowed_origins.py b/oauth2_provider/migrations/0010_application_allowed_origins.py deleted file mode 100644 index a22a8f7c0..000000000 --- a/oauth2_provider/migrations/0010_application_allowed_origins.py +++ /dev/null @@ -1,22 +0,0 @@ -# Generated by Django 4.1.5 on 2023-09-27 20:15 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ("oauth2_provider", "0009_add_hash_client_secret"), - ] - - operations = [ - migrations.AddField( - model_name="application", - name="allowed_origins", - field=models.TextField( - blank=True, - help_text="Allowed origins list to enable CORS, space separated", - default="", - ), - ), - ]