Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class LoginView(views.APIView):
- def post(self, request):
- data = json.loads(request.body)
- if request.user.is_authenticated():
- return Response({
- 'status': 'Unauthorized',
- 'message': 'Already Logged In'
- }, status=status.HTTP_302_FOUND)
- email = data.get('email', None)
- password = data.get('password', None)
- remember_me = data.get('remember_me', None)
- user = authenticate(email=email, password=password)
- if user:
- login(request, user)
- serialized_data = UserSerializer(user)
- if remember_me is None:
- request.session.set_expiry(0)
- return Response(serialized_data.data)
- else:
- return Response({
- 'status': 'Not authorized',
- 'message': 'Invalid Login Details'
- }, status=status.HTTP_401_UNAUTHORIZED)
- class LogoutView(views.APIView):
- def post(self, request):
- if request.user.is_authenticated():
- logout(request)
- return Response({
- 'status': 'Anonymous',
- 'message': 'Successfully Logged Out'
- }, status=status.HTTP_204_NO_CONTENT)
- return Response({
- 'status': 'InvalidRequest',
- 'message': 'User not logged In'
- }, status.HTTP_401_UNAUTHORIZED)
- class DetailView(views.APIView):
- def get(self, request):
- if request.user.is_authenticated():
- return Response(UserSerializer(request.user).data)
- return Response({'status': 'Invalid Request', 'message': 'Login to View Details'},
- status=status.HTTP_401_UNAUTHORIZED)
- class UserRegistrationView(viewsets.ModelViewSet):
- lookup_field = 'email'
- queryset = User.objects.all()
- serializer_class = UserSerializer
- def get_permissions(self):
- if self.request.method in permissions.SAFE_METHODS:
- return (permissions.AllowAny(),)
- if self.request.method == 'POST':
- return (permissions.AllowAny(),)
- return (permissions.IsAuthenticated(),)
- def create(self, request):
- serializer = self.serializer_class(data=request.data)
- if serializer.is_valid():
- print serializer.validated_data
- User.objects.create_user(**serializer.validated_data)
- return Response(serializer.validated_data, status=status.HTTP_201_CREATED)
- return Response({
- 'status': 'Bad request',
- 'message': 'Account could not be created with received data.'
- }, status=status.HTTP_404_NOT_FOUND)
Add Comment
Please, Sign In to add comment