|
1 | 1 | import contextlib
|
2 |
| -from typing import Any, Callable, Dict, List, Type, Union |
| 2 | +from typing import Any, Callable, Dict, List, Type |
3 | 3 |
|
4 | 4 | from fastapi import Depends, HTTPException
|
5 | 5 | from fastapi_amis_admin.admin import (
|
|
29 | 29 | from fastapi_amis_admin.crud.schema import BaseApiOut
|
30 | 30 | from fastapi_amis_admin.utils.pydantic import model_fields
|
31 | 31 | from fastapi_amis_admin.utils.translation import i18n as _
|
32 |
| -from pydantic import BaseModel, SecretStr |
| 32 | +from pydantic import BaseModel |
33 | 33 | from sqlalchemy import select
|
34 | 34 | from sqlmodel.sql.expression import Select
|
35 | 35 | from starlette import status
|
@@ -250,10 +250,9 @@ async def handle(self, request: Request, data: SchemaUpdateT, **kwargs) -> BaseA
|
250 | 250 | if k == "password":
|
251 | 251 | if not v:
|
252 | 252 | continue
|
253 |
| - else: |
254 |
| - v = request.auth.pwd_context.hash(v) # 密码hash保存 |
| 253 | + v = request.auth.get_password_hash(v) |
255 | 254 | setattr(request.user, k, v)
|
256 |
| - return BaseApiOut(data=self.schema_submit_out.parse_obj(request.user)) |
| 255 | + return BaseApiOut(data=request.user.dict(exclude={"password"})) |
257 | 256 |
|
258 | 257 | async def has_page_permission(self, request: Request, obj: PageSchemaAdmin = None, action: str = None) -> bool:
|
259 | 258 | return await self.site.auth.requires(response=False)(request)
|
@@ -307,21 +306,15 @@ class UserAdmin(AuthFieldModelAdmin, AuthSelectModelAdmin, SoftDeleteModelAdmin,
|
307 | 306 |
|
308 | 307 | async def on_create_pre(self, request: Request, obj, **kwargs) -> Dict[str, Any]:
|
309 | 308 | data = await super(UserAdmin, self).on_create_pre(request, obj, **kwargs)
|
310 |
| - data["password"] = self.get_password_hash(request, data["password"]) |
| 309 | + data["password"] = request.auth.get_password_hash(data["password"]) |
311 | 310 | return data
|
312 | 311 |
|
313 | 312 | async def on_update_pre(self, request: Request, obj, item_id: List[int], **kwargs) -> Dict[str, Any]:
|
314 | 313 | data = await super(UserAdmin, self).on_update_pre(request, obj, item_id, **kwargs)
|
315 | 314 | if data.get("password", None):
|
316 |
| - data["password"] = self.get_password_hash(request, data["password"]) |
| 315 | + data["password"] = request.auth.get_password_hash(data["password"]) |
317 | 316 | return data
|
318 | 317 |
|
319 |
| - @staticmethod |
320 |
| - def get_password_hash(request: Request, password: Union[str, SecretStr]) -> str: |
321 |
| - if isinstance(password, SecretStr): |
322 |
| - password = password.get_secret_value() |
323 |
| - return request.auth.pwd_context.hash(password) # 密码hash保存 |
324 |
| - |
325 | 318 |
|
326 | 319 | class RoleAdmin(AutoTimeModelAdmin, FootableModelAdmin):
|
327 | 320 | unique_id = "Auth>RoleAdmin"
|
|
0 commit comments