From c75b965c055b25586bbcd2a7a91852a2bfb24b58 Mon Sep 17 00:00:00 2001 From: long2ice Date: Thu, 20 May 2021 09:37:52 +0800 Subject: [PATCH] Fix `pre_save_admin` --- examples/resources.py | 1 + fastapi_admin/providers/login.py | 7 +++++-- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/examples/resources.py b/examples/resources.py index 8a213b3..ff71a59 100644 --- a/examples/resources.py +++ b/examples/resources.py @@ -56,6 +56,7 @@ class AdminResource(Model): ), "created_at", ] + async def get_toolbar_actions(self, request: Request) -> List[ToolbarAction]: return [] diff --git a/fastapi_admin/providers/login.py b/fastapi_admin/providers/login.py index 5ad37b8..71754a7 100644 --- a/fastapi_admin/providers/login.py +++ b/fastapi_admin/providers/login.py @@ -70,8 +70,11 @@ class UsernamePasswordProvider(Provider): signals.pre_save(self.admin_model)(self.pre_save_admin) async def pre_save_admin(self, _, instance: AbstractAdmin, using_db, update_fields): - db_obj = await instance.get(pk=instance.pk) - if db_obj.password != instance.password: + if instance.pk: + db_obj = await instance.get(pk=instance.pk) + if db_obj.password != instance.password: + instance.password = hash_password(instance.password) + else: instance.password = hash_password(instance.password) async def login(self, request: Request, redis: Redis = Depends(get_redis)):