from rest_framework import status
from rest_framework.decorators import action
from rest_framework.response import Response
from rest_framework.permissions import IsAuthenticated
from account.serializers.change_password import ChangePasswordSerializer
from account.permissions import HasTabPermission
from django.contrib.auth import get_user_model

User = get_user_model()

class ChangePasswordMixin:
    @action(detail=True, methods=['patch'], permission_classes=[IsAuthenticated, HasTabPermission])
    def change_password(self, request, pk=None):
        user = self.get_object()
        serializer = ChangePasswordSerializer(data=request.data)
        
        if serializer.is_valid():
            serializer.update(user, serializer.validated_data)
            return Response({'message': 'Password changed successfully'}, status=status.HTTP_200_OK)
        
        return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
