from rest_framework.views import APIView
from rest_framework.response import Response
from rest_framework import permissions, status
from django.http import HttpRequest
from django.contrib.auth import login
from rest_framework.authentication import SessionAuthentication
from django.contrib.auth.models import User

from ..serializers.change_password import ChangePasswordSerializer

class ChangePasswordView(APIView):

    permission_classes = (permissions.IsAuthenticated,)
    authentication_classes = (SessionAuthentication,)

    def post(self, request: HttpRequest):
        data = request.data

        serializer = ChangePasswordSerializer(data=data)
        if serializer.is_valid(raise_exception=True):
            user: User = request.user
            if (user.check_password(data['current_password']) == 0):
                return Response({'current_password': "The password is not right."}, status=status.HTTP_200_OK)
            user.set_password(data["new_password"])
            return Response('password changed', status=status.HTTP_200_OK)