From 51ebc646497aa3f31ec346a82de57d56b443d2e3 Mon Sep 17 00:00:00 2001 From: long2ice Date: Fri, 10 Jul 2020 15:08:05 +0800 Subject: [PATCH] update password change --- fastapi_admin/common.py | 7 +++++-- fastapi_admin/models.py | 4 +++- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/fastapi_admin/common.py b/fastapi_admin/common.py index 902c4a8..b983b7f 100644 --- a/fastapi_admin/common.py +++ b/fastapi_admin/common.py @@ -20,8 +20,6 @@ async def handle_m2m_fields_create_or_update( :return: """ copy_body = deepcopy(body) - if model == user_model: - copy_body["password"] = pwd_context.hash(copy_body.pop("password")) m2m_body = {} for k, v in body.items(): if k in m2m_fields: @@ -29,6 +27,11 @@ async def handle_m2m_fields_create_or_update( if create: obj = await model.create(**copy_body) else: + password = copy_body.pop("password", None) + if model == user_model: + user = await user_model.get(pk=pk) + if user.password != password: + copy_body["password"] = pwd_context.hash(password) await model.filter(pk=pk).update(**copy_body) obj = await model.get(pk=pk) for k, v in m2m_body.items(): diff --git a/fastapi_admin/models.py b/fastapi_admin/models.py index bc5642c..8ea70f1 100644 --- a/fastapi_admin/models.py +++ b/fastapi_admin/models.py @@ -5,7 +5,9 @@ from fastapi_admin import enums class AbstractUser(Model): username = fields.CharField(max_length=20, unique=True) - password = fields.CharField(max_length=200, description="Will auto hash with raw password") + password = fields.CharField( + max_length=200, description="Will auto hash with raw password when change" + ) class Meta: abstract = True