feat(users): add search endpoint for adding new user to workspace by mobile

This commit is contained in:
2026-03-12 08:30:14 +08:00
parent 5990114151
commit 93b1699253
4 changed files with 65 additions and 0 deletions

View File

@@ -143,3 +143,15 @@ class UserProfileSerializer(BaseModelSerializer):
"is_verified", "full_name", "age"
)
read_only_fields = BaseModelSerializer.Meta.fields + ("mobile", "is_verified")
class UserSearchSerializer(serializers.ModelSerializer):
class Meta:
model = User
fields = (
'id',
'first_name',
'last_name',
'mobile',
'profile_picture',
)

View File

@@ -24,6 +24,7 @@ urlpatterns = [
'patch': 'partial_update',
'delete': 'destroy'
}), name='user-me'),
path('search/', views.UserSearchAPIView.as_view(), name='user-search'),
path("token/obtain/", TokenObtainPairView.as_view(), name="token_obtain_pair"),
path("token/refresh/", TokenRefreshView.as_view(), name="token_refresh"),
]

View File

@@ -28,6 +28,7 @@ from apps.users.api.serializers import (
TokenPairSerializer,
RegisterWithPasswordSerializer,
UserProfileSerializer,
UserSearchSerializer,
)
from apps.users.services.auth import (
register_user_with_password,
@@ -246,3 +247,25 @@ class UserProfileViewSet(RetrieveModelMixin, UpdateModelMixin, DestroyModelMixin
def get_object(self):
return self.request.user
class UserSearchAPIView(APIView):
permission_classes = [IsAuthenticated]
def get(self, request):
mobile = request.query_params.get('mobile')
if not mobile:
return Response(
{"detail": "Mobile parameter is required."},
status=status.HTTP_400_BAD_REQUEST
)
user = User.objects.filter(mobile=mobile).first()
if not user:
return Response(
{"detail": "User not found."},
status=status.HTTP_404_NOT_FOUND
)
serializer = UserSearchSerializer(user, context={"request": request})
return Response(serializer.data, status=status.HTTP_200_OK)