Skip to content

Commit f8c073b

Browse files
authored
Revert "Add OIDC_CLIENT_MODEL setting to enable client model swapping (rebased)"
1 parent 628def9 commit f8c073b

File tree

13 files changed

+14
-138
lines changed

13 files changed

+14
-138
lines changed

docs/sections/settings.rst

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -21,15 +21,6 @@ If not specified, it will be automatically generated using ``request.scheme`` an
2121

2222
For example ``http://localhost:8000``.
2323

24-
OIDC_CLIENT_MODEL
25-
=================
26-
27-
OPTIONAL. ``str``. The client model.
28-
29-
If not specified, the default oidc_provider.Client model is used. This is typically used when
30-
you need to override the Client model to add custom properties on the class. The custom class
31-
should override the oidc_provider.AbstractClient model.
32-
3324
OIDC_AFTER_USERLOGIN_HOOK
3425
=========================
3526

oidc_provider/lib/endpoints/authorize.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,14 +26,13 @@
2626
encode_id_token,
2727
)
2828
from oidc_provider.models import (
29+
Client,
2930
UserConsent,
30-
get_client_model
3131
)
3232
from oidc_provider import settings
3333
from oidc_provider.lib.utils.common import get_browser_state_or_default
3434

3535
logger = logging.getLogger(__name__)
36-
Client = get_client_model()
3736

3837

3938
class AuthorizeEndpoint(object):

oidc_provider/lib/endpoints/token.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,14 +17,13 @@
1717
encode_id_token,
1818
)
1919
from oidc_provider.models import (
20+
Client,
2021
Code,
2122
Token,
22-
get_client_model
2323
)
2424
from oidc_provider import settings
2525

2626
logger = logging.getLogger(__name__)
27-
Client = get_client_model()
2827

2928

3029
class TokenEndpoint(object):

oidc_provider/migrations/0001_initial.py

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,15 +3,13 @@
33

44
from django.db import models, migrations
55
from django.conf import settings
6-
from oidc_provider import settings as oidc_settings
76

87

98
class Migration(migrations.Migration):
109

1110
dependencies = [
1211
('auth', '0001_initial'),
1312
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
14-
migrations.swappable_dependency(oidc_settings.get('OIDC_CLIENT_MODEL')),
1513
]
1614

1715
operations = [
@@ -28,8 +26,6 @@ class Migration(migrations.Migration):
2826
('_redirect_uris', models.TextField(default=b'')),
2927
],
3028
options={
31-
'abstract': False,
32-
'swappable': 'OIDC_CLIENT_MODEL'
3329
},
3430
bases=(models.Model,),
3531
),
@@ -40,7 +36,7 @@ class Migration(migrations.Migration):
4036
('expires_at', models.DateTimeField()),
4137
('_scope', models.TextField(default=b'')),
4238
('code', models.CharField(unique=True, max_length=255)),
43-
('client', models.ForeignKey(oidc_settings.get('OIDC_CLIENT_MODEL'), on_delete=models.CASCADE)),
39+
('client', models.ForeignKey(to='oidc_provider.Client', on_delete=models.CASCADE)),
4440
],
4541
options={
4642
'abstract': False,
@@ -55,7 +51,7 @@ class Migration(migrations.Migration):
5551
('_scope', models.TextField(default=b'')),
5652
('access_token', models.CharField(unique=True, max_length=255)),
5753
('_id_token', models.TextField()),
58-
('client', models.ForeignKey(oidc_settings.get('OIDC_CLIENT_MODEL'), on_delete=models.CASCADE)),
54+
('client', models.ForeignKey(to='oidc_provider.Client', on_delete=models.CASCADE)),
5955
],
6056
options={
6157
'abstract': False,

oidc_provider/migrations/0002_userconsent.py

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,6 @@
44
from django.db import models, migrations
55
from django.conf import settings
66

7-
from oidc_provider import settings as oidc_settings
8-
97

108
class Migration(migrations.Migration):
119

@@ -21,7 +19,7 @@ class Migration(migrations.Migration):
2119
('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
2220
('expires_at', models.DateTimeField()),
2321
('_scope', models.TextField(default=b'')),
24-
('client', models.ForeignKey(to=oidc_settings.get('OIDC_CLIENT_MODEL'), on_delete=models.CASCADE)),
22+
('client', models.ForeignKey(to='oidc_provider.Client', on_delete=models.CASCADE)),
2523
('user', models.ForeignKey(to=settings.AUTH_USER_MODEL, on_delete=models.CASCADE)),
2624
],
2725
options={

oidc_provider/migrations/0016_userconsent_and_verbosenames.py

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,6 @@
88
import django.db.models.deletion
99
from django.utils.timezone import utc
1010

11-
from oidc_provider import settings as oidc_settings
12-
1311

1412
class Migration(migrations.Migration):
1513

@@ -81,7 +79,7 @@ class Migration(migrations.Migration):
8179
model_name='code',
8280
name='client',
8381
field=models.ForeignKey(
84-
on_delete=django.db.models.deletion.CASCADE, to=oidc_settings.get('OIDC_CLIENT_MODEL'), verbose_name='Client'),
82+
on_delete=django.db.models.deletion.CASCADE, to='oidc_provider.Client', verbose_name='Client'),
8583
),
8684
migrations.AlterField(
8785
model_name='code',
@@ -143,7 +141,7 @@ class Migration(migrations.Migration):
143141
model_name='token',
144142
name='client',
145143
field=models.ForeignKey(
146-
on_delete=django.db.models.deletion.CASCADE, to=oidc_settings.get('OIDC_CLIENT_MODEL'), verbose_name='Client'),
144+
on_delete=django.db.models.deletion.CASCADE, to='oidc_provider.Client', verbose_name='Client'),
147145
),
148146
migrations.AlterField(
149147
model_name='token',
@@ -170,7 +168,7 @@ class Migration(migrations.Migration):
170168
model_name='userconsent',
171169
name='client',
172170
field=models.ForeignKey(
173-
on_delete=django.db.models.deletion.CASCADE, to=oidc_settings.get('OIDC_CLIENT_MODEL'), verbose_name='Client'),
171+
on_delete=django.db.models.deletion.CASCADE, to='oidc_provider.Client', verbose_name='Client'),
174172
),
175173
migrations.AlterField(
176174
model_name='userconsent',

oidc_provider/migrations/0027_swappable_client_model.py

Lines changed: 0 additions & 27 deletions
This file was deleted.

oidc_provider/models.py

Lines changed: 4 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -4,14 +4,11 @@
44
from hashlib import md5, sha256
55
import json
66

7-
from django.apps import apps
87
from django.db import models
98
from django.utils import timezone
109
from django.utils.translation import ugettext_lazy as _
1110
from django.conf import settings
1211

13-
from oidc_provider import settings as oidc_settings
14-
1512

1613
CLIENT_TYPE_CHOICES = [
1714
('confidential', 'Confidential'),
@@ -57,13 +54,12 @@ def __str__(self):
5754
return u'{0}'.format(self.description)
5855

5956

60-
class AbstractClient(models.Model):
57+
class Client(models.Model):
6158

6259
name = models.CharField(max_length=100, default='', verbose_name=_(u'Name'))
6360
owner = models.ForeignKey(
6461
settings.AUTH_USER_MODEL, verbose_name=_(u'Owner'), blank=True,
65-
null=True, default=None, on_delete=models.SET_NULL,
66-
related_name='%(app_label)s_%(class)s_set')
62+
null=True, default=None, on_delete=models.SET_NULL, related_name='oidc_clients_set')
6763
client_type = models.CharField(
6864
max_length=30,
6965
choices=CLIENT_TYPE_CHOICES,
@@ -73,8 +69,7 @@ class AbstractClient(models.Model):
7369
u' of their credentials. <b>Public</b> clients are incapable.'))
7470
client_id = models.CharField(max_length=255, unique=True, verbose_name=_(u'Client ID'))
7571
client_secret = models.CharField(max_length=255, blank=True, verbose_name=_(u'Client SECRET'))
76-
response_types = models.ManyToManyField(
77-
ResponseType, related_name='%(app_label)s_%(class)s_set')
72+
response_types = models.ManyToManyField(ResponseType)
7873
jwt_alg = models.CharField(
7974
max_length=10,
8075
choices=JWT_ALGS,
@@ -120,7 +115,6 @@ class AbstractClient(models.Model):
120115
class Meta:
121116
verbose_name = _(u'Client')
122117
verbose_name_plural = _(u'Clients')
123-
abstract = True
124118

125119
def __str__(self):
126120
return u'{0}'.format(self.name)
@@ -164,21 +158,9 @@ def default_redirect_uri(self):
164158
return self.redirect_uris[0] if self.redirect_uris else ''
165159

166160

167-
class Client(AbstractClient):
168-
class Meta(AbstractClient.Meta):
169-
swappable = 'OIDC_CLIENT_MODEL'
170-
171-
172-
def get_client_model():
173-
""" Return the Application model that is active in this project. """
174-
return apps.get_model(oidc_settings.get('OIDC_CLIENT_MODEL'))
175-
176-
177161
class BaseCodeTokenModel(models.Model):
178162

179-
client = models.ForeignKey(
180-
oidc_settings.get('OIDC_CLIENT_MODEL'), verbose_name=_(u'Client'),
181-
on_delete=models.CASCADE)
163+
client = models.ForeignKey(Client, verbose_name=_(u'Client'), on_delete=models.CASCADE)
182164
expires_at = models.DateTimeField(verbose_name=_(u'Expiration Date'))
183165
_scope = models.TextField(default='', verbose_name=_(u'Scopes'))
184166

oidc_provider/settings.py

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -25,14 +25,6 @@ def SITE_URL(self):
2525
"""
2626
return None
2727

28-
@property
29-
def OIDC_CLIENT_MODEL(self):
30-
"""
31-
OPTIONAL. Use a custom client model, typically used to extend the client model
32-
with custom fields. The custom model should override oidc_provider.AbstractClient.
33-
"""
34-
return 'oidc_provider.Client'
35-
3628
@property
3729
def OIDC_AFTER_USERLOGIN_HOOK(self):
3830
"""

oidc_provider/tests/cases/test_models.py

Lines changed: 0 additions & 42 deletions
This file was deleted.

0 commit comments

Comments
 (0)