From 965a8ae2e8f1d80493ec11ac0424086a6bc7f6b3 Mon Sep 17 00:00:00 2001 From: wintel Date: Fri, 11 Apr 2025 01:44:21 +0800 Subject: [PATCH] =?UTF-8?q?fix=20#I62Y74=20=E6=89=A7=E8=A1=8C=E6=9D=83?= =?UTF-8?q?=E9=99=90=E6=89=A9=E5=B1=95=E6=88=90=E6=94=AF=E6=8C=81Sql?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- OpenAuth.App/Flow/FlowRuntime.cs | 28 +++++++++++++++++++++++++++- 1 file changed, 27 insertions(+), 1 deletion(-) diff --git a/OpenAuth.App/Flow/FlowRuntime.cs b/OpenAuth.App/Flow/FlowRuntime.cs index b2d349b4..deb7478e 100644 --- a/OpenAuth.App/Flow/FlowRuntime.cs +++ b/OpenAuth.App/Flow/FlowRuntime.cs @@ -650,6 +650,19 @@ namespace OpenAuth.App.Flow makerList = GenericHelpers.ArrayToString(request.NodeDesignates, makerList); } + else if (nextNode.setInfo.NodeDesignate == Setinfo.SPECIAL_SQL) + { + //如果是指定SQL + if (nextNode.setInfo.NodeDesignate != request.NodeDesignateType) + { + throw new Exception("前端提交的节点权限类型异常,请检查流程"); + } + + var sql = ReplaceSql(nextNode.setInfo.NodeDesignateData.datas[0]); + var sugarClient = AutofacContainerModule.GetService(); + var result = sugarClient.Ado.SqlQuery(sql); + makerList = GenericHelpers.ArrayToString(result, makerList); + } else if (nextNode.setInfo.NodeDesignate == Setinfo.RUNTIME_PARENT || nextNode.setInfo.NodeDesignate == Setinfo.RUNTIME_MANY_PARENTS) { @@ -727,7 +740,7 @@ namespace OpenAuth.App.Flow else if (node.setInfo.NodeDesignate == Setinfo.SPECIAL_SQL) //指定SQL { //如果是指定SQL,则需要执行SQL,并返回结果 - var sql = node.setInfo.NodeDesignateData.datas[0]; + var sql = ReplaceSql(node.setInfo.NodeDesignateData.datas[0]); var sugarClient = AutofacContainerModule.GetService(); var result = sugarClient.Ado.SqlQuery(sql); makerList = GenericHelpers.ArrayToString(result, makerList); @@ -746,6 +759,19 @@ namespace OpenAuth.App.Flow return makerList; } + /// + /// 替换SQL中的权限占位符 + /// + /// + /// + private string ReplaceSql(string sql){ + var loginUser = AutofacContainerModule.GetService().GetCurrentUser(); + var res = sql.Replace(Define.DATAPRIVILEGE_LOGINUSER, loginUser.User.Id); + res = res.Replace(Define.DATAPRIVILEGE_LOGINROLE, string.Join(',', loginUser.Roles.Select(u => u.Id))); + res = res.Replace(Define.DATAPRIVILEGE_LOGINORG, string.Join(',', loginUser.Orgs.Select(u => u.Id))); + return res; + } + /// /// 会签时,获取一条会签分支上面是否有用户可审核的节点 ///