Skip to content

Commit 4b2f31f

Browse files
committed
jwt
1 parent 64a67d6 commit 4b2f31f

5 files changed

Lines changed: 43 additions & 4 deletions

File tree

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1,11 @@
1-
# Create your models here.
1+
import uuid
2+
3+
from django.conf import settings
4+
from django.db import models
5+
6+
7+
class UserProfile(models.Model):
8+
id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
9+
user = models.OneToOneField(
10+
settings.AUTH_USER_MODEL, on_delete=models.CASCADE, related_name="profile"
11+
)

backend/apps/authentication/serializers.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ class RegisterSerializer(serializers.ModelSerializer):
88

99
class Meta:
1010
model = User
11-
fields = ["username", "email", "password"]
11+
fields = ("username", "email", "password")
1212

1313
def validate_username(self, value):
1414
if not all(char.isalnum() or char == "_" for char in value):
Lines changed: 29 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,37 @@
11
from django.contrib.auth.models import User
2-
from rest_framework import generics
2+
from rest_framework import generics, status
3+
from rest_framework.response import Response
4+
from rest_framework_simplejwt.tokens import RefreshToken
35

6+
from .models import UserProfile
47
from .serializers import RegisterSerializer
58

69

710
class RegisterationView(generics.CreateAPIView):
811
queryset = User.objects.all()
912
serializer_class = RegisterSerializer
13+
14+
def create(self, request, *args, **kwargs):
15+
serializer = self.get_serializer(data=request.data)
16+
serializer.is_valid(raise_exception=True)
17+
user = serializer.save()
18+
profile = UserProfile.objects.create(user=user)
19+
refresh = RefreshToken.for_user(user)
20+
return Response(
21+
{
22+
"success": True,
23+
"data": {
24+
"tokens": {
25+
"access_token": str(refresh.access_token),
26+
"refresh_token": str(refresh),
27+
},
28+
"user": {
29+
"id": str(profile.id),
30+
"username": user.username,
31+
"email": user.email,
32+
"created_at": user.date_joined,
33+
},
34+
},
35+
},
36+
status=status.HTTP_201_CREATED,
37+
)

backend/config/settings/base.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
"django.contrib.staticfiles",
1515
# Third-party apps
1616
"rest_framework",
17+
"rest_framework_simplejwt",
1718
# Local apps
1819
"apps.authentication",
1920
]

backend/manage.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77

88
def main():
99
"""Run administrative tasks."""
10-
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "config.settings")
10+
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "config.settings.local")
1111
try:
1212
from django.core.management import execute_from_command_line
1313
except ImportError as exc:

0 commit comments

Comments
 (0)