fix: controll to update user email

master
adriano 2025-06-24 22:08:17 -03:00
parent 31c54be970
commit 07e897cd47
2 changed files with 16 additions and 8 deletions

View File

@ -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,})

View File

@ -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)