From 07e897cd47a12bbd0766037663a5fdcaac5bc7dd Mon Sep 17 00:00:00 2001 From: adriano Date: Tue, 24 Jun 2025 22:08:17 -0300 Subject: [PATCH] fix: controll to update user email --- backend/app/db/models.py | 12 +++++++++--- backend/app/routes/users_routes.py | 12 +++++++----- 2 files changed, 16 insertions(+), 8 deletions(-) diff --git a/backend/app/db/models.py b/backend/app/db/models.py index ce77618..f2439c8 100644 --- a/backend/app/db/models.py +++ b/backend/app/db/models.py @@ -14,9 +14,15 @@ class UserModel: user = {"email": email, "password": hashed} return self.collection.insert_one(user) - def find_by_email(self, email): - return self.collection.find_one({"email": email}) - + def find_by_email(self, email, except_user_id=None): + + if except_user_id: + object_id = ObjectId(except_user_id) + return self.collection.find_one({'email': email, "_id": {"$ne": object_id}}) + + return self.collection.find_one({"email": email}) + + def get_user_by_id(self, user_id): object_id = ObjectId(user_id) return self.collection.find_one({"_id": object_id},{"email": 1, "roles": 1,}) diff --git a/backend/app/routes/users_routes.py b/backend/app/routes/users_routes.py index d906ea1..e45da8f 100644 --- a/backend/app/routes/users_routes.py +++ b/backend/app/routes/users_routes.py @@ -52,12 +52,14 @@ class User(Resource): data = request.get_json() validated = UpdateUserRequest(**data) - - if exist := self.user_model.find_by_email(validated.email): - return {"success": False, 'message': f'Email {exist["email"]} belong to another user'}, 400 - - if not self.user_model.get_user_by_id(user_id): + + if user := self.user_model.get_user_by_id(user_id): + user_already_exist = self.user_model.find_by_email(email=validated.email, except_user_id=user['_id']) + if user_already_exist: + return {"success": False, 'message': f'Email {validated.email} belong to another user'}, 400 + else: return {"success": False, 'message': 'User not found'}, 404 + update_data = validated.model_dump(exclude_none=True)