|
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