Skip to content

Commit b0206c5

Browse files
author
Juan Benitez
committed
add login and TokenAuth
1 parent b898401 commit b0206c5

File tree

5 files changed

+60
-2
lines changed

5 files changed

+60
-2
lines changed

api_crud/settings.py

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,13 @@
2727

2828
ALLOWED_HOSTS = []
2929

30+
REST_FRAMEWORK = {
31+
'DEFAULT_AUTHENTICATION_CLASSES': (
32+
'rest_framework.authentication.TokenAuthentication',
33+
)
34+
}
35+
36+
3037
# Application definition
3138

3239
INSTALLED_APPS = [
@@ -38,8 +45,16 @@
3845
'django.contrib.staticfiles',
3946
'rest_framework',
4047
'movies',
48+
'rest_framework.authtoken',
49+
'rest_auth',
50+
'django.contrib.sites',
51+
'allauth',
52+
'allauth.account',
53+
'rest_auth.registration',
4154
]
4255

56+
SITE_ID = 1
57+
4358
MIDDLEWARE = [
4459
'django.middleware.security.SecurityMiddleware',
4560
'django.contrib.sessions.middleware.SessionMiddleware',

api_crud/urls.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,13 @@
11

22
from django.contrib import admin
33
from django.conf.urls import include, url
4+
from .views import RegisterView
45

56

67
# urls
78
urlpatterns = [
89
url(r'^', include('movies.urls')),
9-
url(r'^api-auth/',include('rest_framework.urls', namespace='rest_framework')),
10+
url(r'^rest-auth/', include('rest_auth.urls')),
11+
url(r'^rest-auth/registration/', RegisterView.as_view()),
1012
url(r'^admin/', admin.site.urls),
1113
]

api_crud/views.py

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
from django.utils.decorators import method_decorator
2+
from django.views.decorators.debug import sensitive_post_parameters
3+
from rest_framework.response import Response
4+
from rest_framework.generics import CreateAPIView
5+
from rest_framework import status
6+
from allauth.account.utils import complete_signup
7+
from allauth.account import app_settings as allauth_settings
8+
from rest_auth.models import TokenModel
9+
from rest_auth.registration.app_settings import RegisterSerializer, register_permission_classes
10+
11+
sensitive_post_parameters_m = method_decorator(
12+
sensitive_post_parameters('password1', 'password2')
13+
)
14+
15+
16+
class RegisterView(CreateAPIView):
17+
serializer_class = RegisterSerializer
18+
permission_classes = register_permission_classes()
19+
token_model = TokenModel
20+
21+
@sensitive_post_parameters_m
22+
def dispatch(self, *args, **kwargs):
23+
return super(RegisterView, self).dispatch(*args, **kwargs)
24+
25+
def create(self, request, *args, **kwargs):
26+
serializer = self.get_serializer(data=request.data)
27+
serializer.is_valid(raise_exception=True)
28+
user = self.perform_create(serializer)
29+
headers = self.get_success_headers(serializer.data)
30+
content = {
31+
"details": "Registered"
32+
}
33+
return Response(content,
34+
status=status.HTTP_201_CREATED,
35+
headers=headers)
36+
37+
def perform_create(self, serializer):
38+
user = serializer.save(self.request)
39+
40+
complete_signup(self.request._request, user, None, None)
41+
return user

db.sqlite3

52 KB
Binary file not shown.

movies/migrations/0001_initial.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
# Generated by Django 2.0.6 on 2018-07-01 14:54
1+
# Generated by Django 2.0.6 on 2018-07-01 22:54
22

33
from django.conf import settings
44
from django.db import migrations, models

0 commit comments

Comments
 (0)