修复密码重置后,数据库未更新问题

This commit is contained in:
yangqiyong@vip.qq.com 2025-03-12 10:42:31 +08:00
parent b541792465
commit a7239b17f4

View File

@ -5,7 +5,7 @@ from flask import request
from flask_restful import Resource, reqparse # type: ignore
from sqlalchemy import select
from sqlalchemy.orm import Session
from sqlalchemy.exc import SQLAlchemyError
from constants.languages import languages
from controllers.console import api
from controllers.console.auth.error import (
@ -119,17 +119,25 @@ class ForgotPasswordResetApi(Resource):
password_hashed = hash_password(new_password, salt)
base64_password_hashed = base64.b64encode(password_hashed).decode()
try:
with Session(db.engine) as session:
# 查询匹配的账户信息
account = session.execute(select(Account).filter_by(email=reset_data.get("email"))).scalar_one_or_none()
if account:
# 更新账户密码和盐值
account.password = base64_password_hashed
account.password_salt = base64_salt
db.session.commit()
session.commit()
# 获取账户加入的租户
tenant = TenantService.get_join_tenants(account)
# 如果账户没有加入租户且系统不允许创建工作区,则创建新租户
if not tenant and not FeatureService.get_system_features().is_allow_create_workspace:
tenant = TenantService.create_tenant(f"{account.name}'s Workspace")
TenantService.create_tenant_member(tenant, account, role="owner")
account.current_tenant = tenant
# 发送租户创建事件通知
tenant_was_created.send(tenant)
else:
try:
@ -143,6 +151,9 @@ class ForgotPasswordResetApi(Resource):
pass
except AccountRegisterError:
raise AccountInFreezeError()
except SQLAlchemyError as e:
# 处理数据库操作异常
session.rollback() # 回滚事务
return {"result": "success"}