068
This commit is contained in:
+70
-34
@@ -51,7 +51,7 @@
|
||||
|
||||
//variables.framework.docs={};
|
||||
variables.framework.docs.APIName="Deck API";
|
||||
variables.framework.docs.APIVersion="0.067";
|
||||
variables.framework.docs.APIVersion="0.068";
|
||||
|
||||
variables.framework.globalHeaders = structNew();
|
||||
variables.framework.globalHeaders["Access-Control-Expose-Headers"] = "Location";
|
||||
@@ -98,7 +98,28 @@
|
||||
<cfreturn (arguments.x NEQ 0)/><!--- при сериализации дает false/true --->
|
||||
</cfif>
|
||||
</cffunction>
|
||||
<cfset request.castToBool=#castToBool#/>
|
||||
<cfset request.castToBool=#castToBool#/>
|
||||
|
||||
|
||||
<!--- <cffunction
|
||||
name="getStand"
|
||||
access="private"
|
||||
returntype="string"
|
||||
output="true">
|
||||
|
||||
<cftry>
|
||||
<cfquery name=qConfig>
|
||||
select value as stand from config
|
||||
where name='STAND'
|
||||
</cfquery>
|
||||
<cfreturn qConfig.stand/>
|
||||
|
||||
<cfcatch type="ANY">
|
||||
|
||||
</cfcatch>
|
||||
</cftry>
|
||||
<cfreturn ""/>
|
||||
</cffunction> --->
|
||||
|
||||
|
||||
<cffunction name="onApplicationStart">
|
||||
@@ -108,9 +129,38 @@
|
||||
<cfset this.iamServiceUrl=locateIamService()/> <!--- ***при недоступности будет падать все --->
|
||||
<cfreturn super.onApplicationStart() />
|
||||
</cffunction>
|
||||
|
||||
|
||||
|
||||
<cffunction name="locateIamService"><!--- *** архитектурный колхоз --->
|
||||
<cffunction name="locateIamService"><!--- *** архитектурный колхоз --->
|
||||
<!--- почему-то мы не видим других функций, когда нас вызывают onApplicationStart. С другой стороны, а почем вообще должны вызывать без перезагрузки приложения --->
|
||||
<cfset var stand=""/>
|
||||
<cftry>
|
||||
<cfquery name=qConfig>
|
||||
select value as stand from config
|
||||
where name='STAND'
|
||||
</cfquery>
|
||||
<cfset stand = qConfig.stand/>
|
||||
|
||||
<cfswitch expression=#stand#>
|
||||
<cfcase value=",dev">
|
||||
<cfreturn "https://deck-dev.ngcloud.ru/api/v1/user"/>
|
||||
</cfcase>
|
||||
<cfcase value="test">
|
||||
<cfreturn "https://deck-test.ngcloud.ru/api/v1/user"/>
|
||||
</cfcase>
|
||||
<cfcase value="prod">
|
||||
<cfreturn "https://deck.ngcloud.ru/api/v1/user"/>
|
||||
</cfcase>
|
||||
<cfdefaultcase><!--- proceed to the legacy locator ---></cfdefaultcase>
|
||||
</cfswitch>
|
||||
|
||||
<cfcatch type="ANY">
|
||||
<!--- do nothing, proceed to the legacy locator --->
|
||||
</cfcatch>
|
||||
</cftry>
|
||||
|
||||
<!--- вот если ничего не прописано, попробуем по-старинке --->
|
||||
<cfloop list="https://deck-dev.ngcloud.ru/api/v1/user,https://deck-test.ngcloud.ru/api/v1/user,https://deck.ngcloud.ru/api/v1/user" index="serviceUrl"><!--- *** начиная с девелоперского --->
|
||||
<cftry>
|
||||
<cfhttp url=#serviceUrl# method="OPTIONS" result="resp" timeout=1/>
|
||||
@@ -132,6 +182,8 @@
|
||||
<cfreturn super.onRequest(template) />
|
||||
</cffunction> --->
|
||||
|
||||
|
||||
|
||||
<cfscript>
|
||||
|
||||
function onTaffyRequest(verb, cfc, requestArguments, mimeExt, headers){
|
||||
@@ -220,7 +272,19 @@
|
||||
if (structIsEmpty(usrCustomerInfo)) return representationOf("User information not found").withStatus(404);
|
||||
}
|
||||
|
||||
if (lCase(arguments.cfc) EQ 'notification_ls') { //*** костыль: для нотификаций можно адресоваться к пользователю без контракта
|
||||
if (structIsEmpty(usrCustomerInfo)) {
|
||||
arguments.requestArguments.usrId=-1; //Integer!
|
||||
arguments.requestArguments.contragentId=-1; //Integer
|
||||
arguments.requestArguments.contractId=-1; //Integer
|
||||
arguments.requestArguments.specificationId=-1; //Integer
|
||||
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
if (structIsEmpty(usrCustomerInfo)) return representationOf("Cannot find default specification for current user #result#").withStatus(422); //это создает довольно много лишних движений при отладке
|
||||
|
||||
arguments.requestArguments.usrId=usrCustomerInfo.usrId; //Integer!
|
||||
arguments.requestArguments.contragentId=usrCustomerInfo.contragentId; //Integer
|
||||
arguments.requestArguments.contractId=usrCustomerInfo.contractId; //Integer
|
||||
@@ -271,35 +335,7 @@
|
||||
вероятно, лучше сделать токен девайса
|
||||
--->
|
||||
|
||||
|
||||
<cffunction name="validatePin" access="private">
|
||||
<cfargument name="authToken"/>
|
||||
<cfargument name="issuedFor"/>
|
||||
<cfargument name="verb"/>
|
||||
<cfargument name="cfc"/> <!---для всех запросов, кроме GET,OPTIONS проверяем разрешенные CFC--->
|
||||
|
||||
<!---catch db issue--->
|
||||
<cfquery name="qCheckToken">
|
||||
select creator_id
|
||||
from auth_token
|
||||
where auth_token=<cfqueryparam cfsqltype="cf_sql_varchar" value="#arguments.authToken#" />
|
||||
AND issued_for=<cfqueryparam cfsqltype="cf_sql_varchar" value="#arguments.issuedFor#" />
|
||||
AND dt_valid_till > <cfqueryparam cfsqltype="cf_sql_timestamp" value="#Now()#" />
|
||||
</cfquery>
|
||||
<!---тут можно добавить защиту от перебора с блокировкой попыток (можно добавить поле-счетчик ошибок)--->
|
||||
|
||||
<!--- <cfdump var=#qCheckToken#/>--->
|
||||
|
||||
<cfif qCheckToken.recordCount GT 0>
|
||||
<cfset request.usr_id=qCheckToken.creator_id /> <!---impersonate pin issuer--->
|
||||
<cfif uCase(arguments.verb) EQ "GET" OR uCase(arguments.verb) EQ "OPTIONS">
|
||||
<cfreturn true/>
|
||||
<cfelseif listFind("work_order,maint,maint_ls,maint_op,maint_op_ls,work_order_engineer_signature,work_order_spare_ls,work_order_spare,work_order_doc,maint_start,maint_doc_ls,maint_op_spare,maint_op_spare_ls,maint_doc", lCase(arguments.cfc))>
|
||||
<cfreturn true/>
|
||||
</cfif>
|
||||
</cfif>
|
||||
<cfreturn false/>
|
||||
</cffunction>
|
||||
|
||||
|
||||
<cffunction name="checkAuth">
|
||||
<!---https://www.sjoerdlangkemper.nl/2018/09/12/authorization-header-and-cors/--->
|
||||
@@ -342,8 +378,8 @@
|
||||
|
||||
|
||||
<cffunction name="getUsrCustomerInfo">
|
||||
|
||||
<cfargument name="usrUid"/>
|
||||
|
||||
<!--- глупейшее определение спецификации по умолчанию (надо переделать, чтобы создавалась, или вообще просто записывать факты без спеки). Но помним, что при постановке на тестирование цены еше не фиксированы --->
|
||||
<!--- заметим, что у нас контрагент может быть определен параллельно, от IDP --->
|
||||
<cfset local={}/>
|
||||
@@ -805,7 +841,7 @@
|
||||
</cfif>
|
||||
|
||||
<cfreturn true />
|
||||
</cffunction>
|
||||
</cffunction>
|
||||
|
||||
|
||||
<!--- <cffunction name="checkForLocalDebug">
|
||||
|
||||
Reference in New Issue
Block a user