125 resource realm rfs check modification

This commit is contained in:
msyu
2025-07-10 12:46:37 +03:00
parent ba00920336
commit 4de33d7f3f
2 changed files with 41 additions and 27 deletions
+40 -26
View File
@@ -160,25 +160,7 @@
</cfquery>
</cffunction>
<!---
-- полезный селект, не выбрасывать
<cfquery name="qSvcOperationCfsParam">
select sop.svc_operation_cfs_param_id
,iop.instance_operation_cfs_param_uid::text as instance_operation_cfs_param_uid /*pgjdbc issue fix*/
,iop.param_value
,sop.svc_operation_cfs_param
,sop.data_type
,sop.is_required
,sop.maxlength,sop.minlength,sop.regex,sop.unique_scope
from instance_operation io
join instance e on (io.instance_uid=e.instance_uid)
join svc_operation so on (e.service_id=so.svc_id AND io.operation=so.operation)
join svc_operation_cfs_param sop on (so.svc_operation_id=sop.svc_operation_id)
left outer join instance_operation_cfs_param iop
on (sop.svc_operation_cfs_param_id=iop.svc_operation_cfs_param_id AND io.instance_operation_uid=iop.instance_operation_uid)
where iop.instance_operation_uid=<cfqueryparam cfsqltype="cf_sql_other" value=#arguments.instanceOperationUid# null=#!isValid("guid",arguments.instanceOperationUid)#/>)
</cfquery>
--->
<cffunction name="submitJob">
<cfargument name="instanceOperationUid" type="string" required=true hint="type:guid"/>
@@ -423,7 +405,8 @@
where io.instance_operation_uid=<cfqueryparam cfsqltype="cf_sql_other" value="#arguments.instanceOperationUid#" null=#!isValid("guid",arguments.instanceOperationUid)#/>
AND LOWER(iop.param)=LOWER('resourceRealm')
</cfquery> --->
<cfquery name="local.qParam">
<!--- <cfquery name="local.qParam">
select sop.svc_operation_param
from instance_operation io
join instance e on (io.instance_uid=e.instance_uid)
@@ -431,18 +414,29 @@
join svc_operation_param sop on (so.svc_operation_id=sop.svc_operation_id)
where io.instance_operation_uid=<cfqueryparam cfsqltype="cf_sql_other" value="#arguments.instanceOperationUid#" null=#!isValid("guid",arguments.instanceOperationUid)#/>
AND LOWER(sop.svc_operation_param)=LOWER('resourceRealm')
</cfquery><!--- Проверка на LOWER: возможная атака, поэтому трактуем расширенно --->
</cfquery>
<cfif local.qParam.recordCount EQ 0>
<cfreturn/><!--- параметр операции сервиса не найден, нечего проверять --->
</cfif>
<!--- *** Особенность: если параметр resourceRealm определен у операции сервиса, он ведет себя как обязательный - его отсутствие у инстанса вызовет ошибку при проверке --->
<cfreturn/>
</cfif> --->
<!--- на всякий случай будем проверять параметр, даже если он не определен у сервиса --->
<cfquery name="local.qOperation">
<!--- *** Особенность: если параметр resourceRealm определен у операции сервиса, он ведет себя как обязательный независимо от флага обязательности - его отсутствие у инстанса вызовет ошибку при проверке --->
<!--- <cfquery name="local.qOperation">
select io.operation
from instance_operation io
where io.instance_operation_uid=<cfqueryparam cfsqltype="cf_sql_other" value="#arguments.instanceOperationUid#" null=#!isValid("guid",arguments.instanceOperationUid)#/>
</cfquery> --->
<cfquery name="local.qParamRRExists">
select count(*) as cnt
from instance_operation_param iop
where iop.param='resourceRealm' AND
iop.instance_operation_uid=<cfqueryparam cfsqltype="cf_sql_other" value="#arguments.instanceOperationUid#" null=#!isValid("guid",arguments.instanceOperationUid)#/>
</cfquery>
<cfif local.qParamRRExists.cnt EQ 0>
<cfreturn/>
</cfif>
<cfquery name="local.qContract">
select c.contract_id
@@ -473,4 +467,24 @@
</cfif>
</cffunction>
</cfcomponent>
</cfcomponent>
<!---
-- полезный селект, не выбрасывать
<cfquery name="qSvcOperationCfsParam">
select sop.svc_operation_cfs_param_id
,iop.instance_operation_cfs_param_uid::text as instance_operation_cfs_param_uid /*pgjdbc issue fix*/
,iop.param_value
,sop.svc_operation_cfs_param
,sop.data_type
,sop.is_required
,sop.maxlength,sop.minlength,sop.regex,sop.unique_scope
from instance_operation io
join instance e on (io.instance_uid=e.instance_uid)
join svc_operation so on (e.service_id=so.svc_id AND io.operation=so.operation)
join svc_operation_cfs_param sop on (so.svc_operation_id=sop.svc_operation_id)
left outer join instance_operation_cfs_param iop
on (sop.svc_operation_cfs_param_id=iop.svc_operation_cfs_param_id AND io.instance_operation_uid=iop.instance_operation_uid)
where iop.instance_operation_uid=<cfqueryparam cfsqltype="cf_sql_other" value=#arguments.instanceOperationUid# null=#!isValid("guid",arguments.instanceOperationUid)#/>)
</cfquery>
--->