Defect: 邮件模板显示内容不正确

在IAM系统中,用户A的权限申请邮件存在错误。首次请求被拒绝后,第二次请求被批准,但邮件中仍显示了拒绝时的理由。问题源于查询结果未按时间排序。通过分析SQL查询和邮件模板,发现orderreason的定义有误。解决方案是更新orderreason的定义,确保获取到最新的请求理由。修改后的定义能正确获取最近的申请信息。
摘要由CSDN通过智能技术生成

项目场景:

当客户申请某一项权限的时候,审核人会收到相应的邮件,里面会列出申请人的相关申请信息。


问题描述:

以下内容是终端用户给出的问题复现步骤。
I can confirm my finding. Steps to reproduce.

  1. User A creates request in IAM. Reason for request: TEST
  2. request is declined by me
  3. User A creates request in IAM again. Reason for request: TESTTESTTEST. 12345678
  4. request is approved
  5. email created by IAM contains ‘Reason TEST’ (reason from declined request) instead of ‘Reason TESTTESTTEST. 12345678’.

原因分析:

整体大致思路如下:

  1. 找到邮件模板,查看邮件模板中 order reason的定义
  2. 找到生成该邮件的jobchain,继续查看 order reason的定义
  3. 分析 order reason的定义,找到定义中有漏洞的地方(八成是查询结果没排序)并修正。

以下是分析时使用的SQL。

select * from PersonWantsOrg a where UID_Org = '1865CDC0-212E-4535-BCE4-2045F02E1B8B' and UID_PersonOrdered = '2c5c0b53-34ae-4ccb-ba5c-dfe53ec6aa29';  --这个是给出的条件

select * from DialogRichMailBody a where a.RichMailBody like '%please define a new MR SIAM incident with the following information%NEW ROLE%';  --这个是给出的邮件样例上的文字,用这个来查找试试看
select * from DialogRichMail a where a.UID_DialogRichMail = 'CCC-1cc39b10b6d94462bde136fcfd5d9917'; -- 查找到邮件模板的名称等信息

select a.JobChainName,a.XDateInserted, a.* from JobHistory a where a.BasisObjectKey like '%530220d3-873d-4626-b6ec-9cfbe332a51d%' order by a.XDateInserted desc; --8.20 第二次申请信息,希望可以找到生成邮件的jobchain
select a.JobChainName,a.XDateInserted, a.* from JobHistory a where a.GenProcID like '%4fad9273-317c-4c39-a13d-dca1ee979467%' order by a.XDateInserted desc; --8.20 通过GenProcID 来继续查找生成邮件的jobchain,通过这个条件,果然查找成功。

在这个job chain中是这样定义order reason的, 跟预先猜想的一样。

strOrderReason = Connection.GetSingleProperty("PersonWantsOrg", "OrderReason", _
            f.AndRelation(f.Comparison("ObjectKeyOrdered", $FK(UID_UNSGroupB).XObjectKey$, ValType.String, CompareOperator.Equal), _
            f.Comparison("UID_PersonOrdered", $FK(UID_UNSAccountB).UID_Person$, ValType.String, CompareOperator.Equal)))

解决方案:

解决方法就是定义进行修改。如下是修改以后的定义。

strOrderReason = Connection.GetSingleProperty("PersonWantsOrg", "OrderReason", _
				String.Format("UID_PersonWantsOrg in (Select top 1 UID_PersonWantsOrg from PersonWantsOrg where {0} order by XDateInserted desc)", _
				f.AndRelation(f.Comparison("ObjectKeyOrdered", $FK(UID_UNSGroupB).XObjectKey$, ValType.String, CompareOperator.Equal), _
				f.Comparison("UID_PersonOrdered", $FK(UID_UNSAccountB).UID_Person$, ValType.String, CompareOperator.Equal))))
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值