summaryrefslogtreecommitdiffstats
path: root/auth_api/views.py
diff options
context:
space:
mode:
Diffstat (limited to 'auth_api/views.py')
-rw-r--r--auth_api/views.py61
1 files changed, 61 insertions, 0 deletions
diff --git a/auth_api/views.py b/auth_api/views.py
new file mode 100644
index 0000000..caf4782
--- /dev/null
+++ b/auth_api/views.py
@@ -0,0 +1,61 @@
1from django.contrib.auth import login
2from django.contrib.auth.models import User
3from django.http.response import Http404
4from django.shortcuts import get_object_or_404
5
6from rest_framework import permissions, serializers
7from rest_framework.authtoken.serializers import AuthTokenSerializer
8from rest_framework.response import Response
9from rest_framework.views import APIView
10
11from knox.views import LoginView as KnoxLoginView
12from knox.auth import TokenAuthentication
13
14from .serializers import UserSerializer, RegisterUserSerializer
15
16class LoginView(KnoxLoginView):
17 permission_classes = (permissions.AllowAny, )
18
19 def post(self, request, format=None):
20 serializer = AuthTokenSerializer(data=request.data)
21 serializer.is_valid(raise_exception=True)
22 user = serializer.validated_data['user']
23 login(request, user)
24 return super(LoginView, self).post(request, format=None)
25
26class RegisterView(APIView):
27
28 def post(self, request):
29 serializer = RegisterUserSerializer(data=request.data)
30 serializer.is_valid(raise_exception=True)
31 user = serializer.register_user()
32
33 return Response(status=200)
34
35class UserInfo(APIView):
36 authentication_classes = (TokenAuthentication, )
37 permission_classes = (permissions.IsAuthenticated, )
38
39 def get(self, request):
40 user = request.GET.get("pk", request.user)
41 username = request.GET.get("username", None)
42
43 if username:
44 users = User.objects.filter(username__startswith = username)[:5]
45 serializer = UserSerializer(users, many=True)
46
47 return Response({
48 "users": serializer.data
49 })
50
51 if not isinstance(user, User):
52 try:
53 user = get_object_or_404(User, pk=user)
54 except ValueError:
55 raise Http404
56
57 serializer = UserSerializer(user)
58
59 return Response({
60 "user": serializer.data
61 }) \ No newline at end of file