Skip to content

Commit fcf357c

Browse files
committed
Add client_id to SessionToken and SessionTokenSerializer
1 parent 4306bbf commit fcf357c

File tree

4 files changed

+28
-2
lines changed

4 files changed

+28
-2
lines changed
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
# Generated by Django 3.2.7 on 2021-10-26 09:51
2+
3+
from django.db import migrations, models
4+
5+
6+
class Migration(migrations.Migration):
7+
8+
dependencies = [
9+
("rest_framework_sso", "0002_sessiontoken_last_used_at"),
10+
]
11+
12+
operations = [
13+
migrations.AddField(
14+
model_name="sessiontoken",
15+
name="client_id",
16+
field=models.CharField(blank=True, max_length=1000),
17+
),
18+
]

rest_framework_sso/models.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ class SessionToken(models.Model):
2828

2929
id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False, db_index=True)
3030
user = models.ForeignKey(to=AUTH_USER_MODEL, related_name="+", on_delete=models.CASCADE, verbose_name=_("user"))
31+
client_id = models.CharField(max_length=1000, blank=True)
3132
ip_address = models.GenericIPAddressField(null=True, blank=True, db_index=True)
3233
user_agent = models.CharField(max_length=1000, blank=True)
3334
last_used_at = models.DateTimeField(null=True, blank=True, db_index=True)

rest_framework_sso/serializers.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
class SessionTokenSerializer(serializers.Serializer):
1919
username = serializers.CharField(label=_("Username"))
2020
password = serializers.CharField(label=_("Password"), style={"input_type": "password"})
21+
client_id = serializers.CharField(label=_("Client ID"), allow_blank=True, required=False, default="")
2122

2223
def validate(self, attrs):
2324
username = attrs.get("username")

rest_framework_sso/views.py

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -72,9 +72,15 @@ def post(self, request, *args, **kwargs):
7272
serializer = self.get_serializer(data=request.data)
7373
serializer.is_valid(raise_exception=True)
7474
user = serializer.validated_data["user"]
75-
session_token = SessionToken.objects.active().filter(user=user).with_user_agent(request=request).first()
75+
client_id = serializer.validated_data["client_id"]
76+
session_token = (
77+
SessionToken.objects.active()
78+
.filter(user=user, client_id=client_id)
79+
.with_user_agent(request=request)
80+
.first()
81+
)
7682
if session_token is None:
77-
session_token = SessionToken(user=user)
83+
session_token = SessionToken(user=user, client_id=client_id)
7884
session_token.update_attributes(request=request)
7985
session_token.save()
8086
payload = create_session_payload(session_token=session_token, user=user)

0 commit comments

Comments
 (0)