diff --git a/actions/index.js b/actions/index.js index eaea16b2..88efef38 100644 --- a/actions/index.js +++ b/actions/index.js @@ -72,56 +72,7 @@ const tokenConfig = { }, }; -export const getSASToken = () => { - var m_ResourceURI = - process.env.RELAYURI || "dev-pedw-ns.servicebus.windows.net"; - var m_Path = process.env.RELAYPATH || "dev-pedw-hc"; - var m_SasKey = - process.env.SASKEY || "Ml0Y/S/nfRcmIrHFRkO4jNm2J3iH52TSxPiak7+E1+Y="; - var m_SasKeyName = process.env.SASKEYNAME || "devpedwnspolicy"; - - var encodedResourceUri = encodeURIComponent( - "https://" + m_ResourceURI + "/" + m_Path + "/" - ); - - var t0 = new Date(1970, 1, 1, 0, 0, 0, 0); - var t1 = new Date(); - var expireInSeconds = - +(31 * 24 * 3600) + 3600 + (((t1.getTime() - t0.getTime()) / 1000) | 0); - - //the line below is a hack that converts to UTF8 - var plainSignature = JSON.parse( - JSON.stringify(encodedResourceUri + "\n" + expireInSeconds) - ); - - var hash = CryptoJS.HmacSHA256(plainSignature, m_SasKey); - var base64HashValue = CryptoJS.enc.Base64.stringify(hash); - - var token = - "SharedAccessSignature sr=" + - encodedResourceUri + - "&sig=" + - encodeURIComponent(base64HashValue) + - "&se=" + - expireInSeconds + - "&skn=" + - m_SasKeyName; - - // console.log("///////////////////////"); - // console.log( - // "encodedURI:" + "https://" + m_ResourceURI + "/" + m_Path + "/" - // ); - // console.log("WEBAPI_URL: " + WEBAPI_URL); - // console.log("m_ResourceURI: " + m_ResourceURI); - // console.log("m_Path: " + m_Path); - // console.log("m_SasKey: " + m_SasKey); - // console.log("m_SasKeyName: " + m_SasKeyName); - // console.log("token: " + token); - // console.log("///////////////////////"); - return token; -}; - -const azureHeaders = (SASToken) => { +const azureHeaders = (access_token) => { return { headers: { "OData-MaxVersion": "4.0", @@ -129,12 +80,12 @@ const azureHeaders = (SASToken) => { "Accept": "application/json", "Prefer": 'odata.include-annotations="*",return=representation', "Content-Type": "application/json", - "Authorization": "Bearer " + SASToken, + "Authorization": "Bearer " + access_token, }, }; }; -const azureHeadersPaged = (SASToken) => { +const azureHeadersPaged = (access_token) => { return { headers: { "OData-MaxVersion": "4.0", @@ -143,7 +94,7 @@ const azureHeadersPaged = (SASToken) => { "Prefer": 'odata.include-annotations="*",return=representation, odata.maxpagesize=10', "Content-Type": "application/json", - "Authorization": "Bearer " + SASToken, + "Authorization": "Bearer " + access_token, }, }; }; @@ -172,7 +123,6 @@ export const getBasicSearch = (token, searchString) => { "') or contains(ticketnumber, '" + searchString + "')) and pinswg_appealcasetype ne null and pinswg_publishtoweb eq true&$orderby=createdon desc&$count=true"; - return axios .get( WEBAPI_URL + queryUrl + hashAPIPath(queryUrl), @@ -476,8 +426,6 @@ export const getSearchDocumentHistoryPaged = (documentID, pageNumber) => { }; export const getSearchDocumentDetails1 = (incidentID) => { - //console.log(incidentID); - var token = getSASToken(); var queryUrl = "/api/proxy/pinswg_documents?$count=true&$filter=pinswg_publishtoweb eq true and _pinswg_documentids_value eq " + incidentID + @@ -491,8 +439,6 @@ export const getSearchDocumentDetails1 = (incidentID) => { }; export const getSearchDocumentDetails1Paged = (incidentID, pageNumber) => { - //console.log(incidentID); - var token = getSASToken(); var queryUrl = "/api/proxy/pinswg_documents?$count=true&$filter=pinswg_publishtoweb eq true and _pinswg_documentids_value eq " + incidentID + @@ -509,8 +455,6 @@ export const getSearchDocumentDetails1Paged = (incidentID, pageNumber) => { }; export const getSearchDocumentHistory1 = (documentID) => { - //console.log(documentID); - var token = getSASToken(); var queryUrl = "/api/proxy/pinswg_documenthistories?$count=true&$select=_pinswg_documentid_value,pinswg_createddate,pinswg_state,pinswg_fileexists,statecode,pinswg_publisheddate&$filter=_pinswg_documentid_value eq " + documentID; @@ -525,8 +469,6 @@ export const getSearchDocumentHistory1 = (documentID) => { }; export const getSearchDocumentHistory1Paged = (documentID, pageNumber) => { - //console.log(documentID); - var token = getSASToken(); var queryUrl = "/api/proxy/pinswg_documenthistories?$count=true&$select=_pinswg_documentid_value,pinswg_createddate,pinswg_state,pinswg_fileexists,statecode,pinswg_publisheddate&$filter=_pinswg_documentid_value eq " + documentID + @@ -711,7 +653,7 @@ export const getAppealID = ( return axios .get( WEBAPI_URL + queryUrl + hashAPIPath(queryUrl), - azureHeaders(getSASToken()) + azureHeaders(getToken()) ) .then((res) => { var appealID = res.data.value[0][primaryAttribute]; @@ -1036,7 +978,6 @@ export const getPortalModuleDetailsProxy = ( }; export const getEmailAccountCheck = (emailAddress) => { - let token = getSASToken(); var queryUrl = "/api/proxy/contacts?$filter=emailaddress1 eq '" + emailAddress + diff --git a/pages/api/proxy/[...route].js b/pages/api/proxy/[...route].js index aa099a0c..715ea838 100644 --- a/pages/api/proxy/[...route].js +++ b/pages/api/proxy/[...route].js @@ -11,42 +11,43 @@ const PROXY_RELAY_URL = (process.env.RELAYPATH || "dev-pedw-hc") + "/"; -const getSASToken = () => { - var m_ResourceURI = - process.env.RELAYURI || "dev-pedw-ns.servicebus.windows.net"; - var m_Path = process.env.RELAYPATH || "dev-pedw-hc"; - var m_SasKey = - process.env.SASKEY || "Ml0Y/S/nfRcmIrHFRkO4jNm2J3iH52TSxPiak7+E1+Y="; - var m_SasKeyName = process.env.SASKEYNAME || "devpedwnspolicy"; +const accessTokenEndpoint = process.env.ACCESS_TOKEN_ENDPOINT; +const tenantId = process.env.TENANT; - var encodedResourceUri = encodeURIComponent( - "https://" + m_ResourceURI + "/" + m_Path + "/" - ); +const tokenBody = + "grant_type=" + + process.env.GRANT_TYPE + + "&client_id=" + + process.env.CLIENT_ID + + "&client_secret=" + + process.env.CLIENT_SECRET + + "&scope=" + + "https://" + + process.env.RELAYURI + + "/.default"; - var t0 = new Date(1970, 1, 1, 0, 0, 0, 0); - var t1 = new Date(); - var expireInSeconds = - +(31 * 24 * 3600) + 3600 + (((t1.getTime() - t0.getTime()) / 1000) | 0); +const tokenConfig = { + headers: { + "Content-Type": "application/x-www-form-urlencoded", + "Cache-Control": "no-cache", + }, +}; - //the line below is a hack that converts to UTF8 - var plainSignature = JSON.parse( - JSON.stringify(encodedResourceUri + "\n" + expireInSeconds) - ); - - var hash = CryptoJS.HmacSHA256(plainSignature, m_SasKey); - var base64HashValue = CryptoJS.enc.Base64.stringify(hash); - - var token = - "SharedAccessSignature sr=" + - encodedResourceUri + - "&sig=" + - encodeURIComponent(base64HashValue) + - "&se=" + - expireInSeconds + - "&skn=" + - m_SasKeyName; - - return token; +export const getToken = () => { + return axios + .post( + `${accessTokenEndpoint}${tenantId}/oauth2/v2.0/token`, + tokenBody, + tokenConfig + ) + .then((res) => res.data) + .then((data) => { + return data; + }) + .catch((error) => { + console.log("error :", error.response); + // return error; + }); }; function checkProxyPath(queryPath) { @@ -70,7 +71,9 @@ function checkProxyPath(queryPath) { export default async function ApiProxy(req, res) { var data = JSON.stringify(req.body); - const SASToken = getSASToken(); + var accessToken = await getToken(); + accessToken = accessToken.access_token; + const isDocument = req.url.indexOf("/documents/download") > -1; let hashCheckPath = isDocument @@ -95,7 +98,7 @@ export default async function ApiProxy(req, res) { "Accept": "application/json", "Prefer": 'odata.include-annotations="*",return=representation,odata.maxpagesize=10', - "Authorization": SASToken, + "Authorization": "Bearer " + accessToken, "Content-Type": "application/json", }, }; @@ -112,7 +115,7 @@ export default async function ApiProxy(req, res) { "OData-Version": "4.0", "Accept": "application/json", "Prefer": 'odata.include-annotations="*",return=representation', - "Authorization": SASToken, + "Authorization": "Bearer " + accessToken, "Content-Type": "application/json", }, data: data, @@ -130,7 +133,7 @@ export default async function ApiProxy(req, res) { "OData-Version": "4.0", "Accept": "application/json", "Prefer": 'odata.include-annotations="*",return=representation', - "Authorization": SASToken, + "Authorization": "Bearer " + accessToken, "Content-Type": "application/json", }, responseType: "arraybuffer", @@ -168,7 +171,7 @@ export default async function ApiProxy(req, res) { }) .catch((error) => { console.log("proxy response error", error); - // res.json(error); + //res.json(error); res.status(405).end(); return resolve(); });