feat: User reset pwd api

This commit is contained in:
fit2cloud-chenyw
2025-07-16 17:57:46 +08:00
parent de9f8c2368
commit 07884b2a72
2 changed files with 34 additions and 4 deletions
+11 -1
View File
@@ -9,7 +9,7 @@ from apps.system.schemas.system_schema import PwdEditor, UserCreator, UserEditor
from common.core.deps import CurrentUser, SessionDep, Trans
from common.core.pagination import Paginator
from common.core.schemas import PaginatedResponse, PaginationParams
from common.core.security import md5pwd, verify_md5pwd
from common.core.security import default_md5_pwd, md5pwd, verify_md5pwd
from common.core.sqlbot_cache import clear_cache
router = APIRouter(tags=["user"], prefix="/user")
@@ -132,6 +132,16 @@ async def langChange(session: SessionDep, current_user: CurrentUser, language: U
db_user.language = lang
session.add(db_user)
session.commit()
@router.patch("/pwd/{id}")
@clear_cache(namespace=CacheNamespace.AUTH_INFO, cacheName=CacheName.USER_INFO, keyExpression="id")
async def pwdReset(session: SessionDep, current_user: CurrentUser, id: int):
if not current_user.isAdmin:
raise RuntimeError('only for admin')
db_user: UserModel = get_db_user(session=session, user_id=id)
db_user.password = default_md5_pwd()
session.add(db_user)
session.commit()
@router.put("/pwd")
@clear_cache(namespace=CacheNamespace.AUTH_INFO, cacheName=CacheName.USER_INFO, keyExpression="current_user.id")
+23 -3
View File
@@ -33,8 +33,10 @@ def get_assistant_ds(*, session: Session, assistant: AssistantModel):
db_ds_list = session.exec(stmt).all()
# filter private ds if offline
return db_ds_list
pass
out_ds_instance: AssistantOutDs = AssistantOutDsFactory.get_instance(assistant)
dslist = out_ds_instance.get_ds_list()
# format?
return dslist
def init_dynamic_cors(app: FastAPI):
try:
@@ -58,4 +60,22 @@ def init_dynamic_cors(app: FastAPI):
updated_origins = list(set(settings.all_cors_origins + unique_domains))
cors_middleware.kwargs['allow_origins'] = updated_origins
except Exception as e:
return False, e
return False, e
class AssistantOutDs:
assistant: AssistantModel
def get_ds_list(self):
config: dict[any] = json.loads(self.assistant.configuration)
url: str = config['url']
return None
class AssistantOutDsFactory:
_instance: AssistantOutDs = None
@staticmethod
def get_instance(cls, assistant: AssistantModel) -> AssistantOutDs:
if not cls._instance:
cls._instance = AssistantOutDs(assistant)
return cls._instance