Skip to content

Commit 3f3b6bc

Browse files
Merge branch 'main' into CS-10269-sfcc-gtin-support-cartridge
2 parents eb3c237 + 6a312df commit 3f3b6bc

File tree

2 files changed

+296
-229
lines changed

2 files changed

+296
-229
lines changed

Cartridges/bm_firework_dashboard/cartridge/controllers/Oauth.js

Lines changed: 141 additions & 145 deletions
Original file line numberDiff line numberDiff line change
@@ -12,176 +12,172 @@ var PreferencesModel = require('*/cartridge/models/fwPreferencesModel.js');
1212
*
1313
* @module controllers/show
1414
*/
15-
function show()
16-
{
15+
function show() {
1716
/* Local API Includes */
1817
try {
19-
var redirectCallbackUrl =request.getHttpProtocol()+"://"+request.getHttpHost()+dw.web.URLUtils.url('Oauth-callback');
20-
var oauthCOObj = CustomObjectMgr.getCustomObject('FireworkOauthCO',dw.system.Site.current.ID);
21-
if(oauthCOObj != null)
22-
{
23-
var getTokenJSONObj = {};
24-
getTokenJSONObj.clientSecret=oauthCOObj.custom.fireworkClientSecret;
25-
getTokenJSONObj.clientId=oauthCOObj.custom.fireworkClientId;
26-
getTokenJSONObj.shortCode=oauthCOObj.custom.fireworkShortCode;
27-
getTokenJSONObj.fworganizationid=oauthCOObj.custom.fireworkOrgId;
28-
getTokenJSONObj.tenant_id=oauthCOObj.custom.fireworkTenantId;
29-
var successURL = dw.web.URLUtils.url('Oauth-success');
30-
ISML.renderTemplate('oauth/oauthForm',{successURL: successURL,OauthData:getTokenJSONObj,redirectCallbackUrl:redirectCallbackUrl});
31-
return;
32-
}
33-
else
34-
{
35-
var getTokenJSONObj = {};
36-
getTokenJSONObj.clientSecret='';
37-
getTokenJSONObj.clientId='';
38-
getTokenJSONObj.shortCode='';
39-
getTokenJSONObj.fworganizationid='';
40-
getTokenJSONObj.tenant_id='';
41-
var successURL = dw.web.URLUtils.url('Oauth-success');
42-
ISML.renderTemplate('oauth/oauthForm',{successURL: successURL,OauthData:getTokenJSONObj,redirectCallbackUrl:redirectCallbackUrl});
43-
return;
44-
}
45-
46-
}catch (e){
47-
var errorMsg= {
48-
status: 'failed',
49-
message:"error has occurred "+e
50-
};
51-
ISML.renderTemplate('oauth/errorMsg',{errorMsg:errorMsg});
18+
var redirectCallbackUrl = URLUtils.https('Oauth-callback').toString();
19+
redirectCallbackUrl = redirectCallbackUrl.replace(/%3b/gi, ';').replace(/%3d/gi, '=');
20+
// Remove BM specific parameters to get clean callback URL
21+
redirectCallbackUrl = redirectCallbackUrl.replace(/;app=__bm_merchant;site=[^\/]+/g, '');
22+
var oauthCOObj = CustomObjectMgr.getCustomObject('FireworkOauthCO', dw.system.Site.current.ID);
23+
if (oauthCOObj != null) {
24+
var getTokenJSONObj = {};
25+
getTokenJSONObj.clientSecret = oauthCOObj.custom.fireworkClientSecret;
26+
getTokenJSONObj.clientId = oauthCOObj.custom.fireworkClientId;
27+
getTokenJSONObj.shortCode = oauthCOObj.custom.fireworkShortCode;
28+
getTokenJSONObj.fworganizationid = oauthCOObj.custom.fireworkOrgId;
29+
getTokenJSONObj.tenant_id = oauthCOObj.custom.fireworkTenantId;
30+
var successURL = dw.web.URLUtils.url('Oauth-success');
31+
ISML.renderTemplate('oauth/oauthForm', { successURL: successURL, OauthData: getTokenJSONObj, redirectCallbackUrl: redirectCallbackUrl });
32+
return;
33+
}
34+
else {
35+
var getTokenJSONObj = {};
36+
getTokenJSONObj.clientSecret = '';
37+
getTokenJSONObj.clientId = '';
38+
getTokenJSONObj.shortCode = '';
39+
getTokenJSONObj.fworganizationid = '';
40+
getTokenJSONObj.tenant_id = '';
41+
var successURL = dw.web.URLUtils.url('Oauth-success');
42+
ISML.renderTemplate('oauth/oauthForm', { successURL: successURL, OauthData: getTokenJSONObj, redirectCallbackUrl: redirectCallbackUrl });
5243
return;
5344
}
45+
46+
} catch (e) {
47+
var errorMsg = {
48+
status: 'failed',
49+
message: "error has occurred " + e
50+
};
51+
ISML.renderTemplate('oauth/errorMsg', { errorMsg: errorMsg });
52+
return;
53+
}
5454
return;
5555
}
5656
/**
5757
* This controller implements the business manager extension action for Oauth Token Process.
5858
*
5959
* @module controllers/success
6060
*/
61-
function success()
62-
{
61+
function success() {
6362
/* Local API Includes */
6463
try {
65-
var oauthConfig={};
66-
var shortCode =request.httpParameterMap.shortcode;
67-
var fworganizationid =request.httpParameterMap.fworganizationid;
68-
var fwclientid =request.httpParameterMap.fwclientid;
69-
var fwclientsecret =request.httpParameterMap.fwclientsecret;
70-
var tenantId =request.httpParameterMap.tenantId;
71-
var oauthCOObj = CustomObjectMgr.getCustomObject('FireworkOauthCO',dw.system.Site.current.ID);
72-
var callbackUrl=request.getHttpProtocol()+"://"+request.getHttpHost()+dw.web.URLUtils.url('Oauth-callback');
73-
oauthConfig.shortCode=shortCode;
74-
oauthConfig.fworganizationid=fworganizationid;
75-
oauthConfig.fwclientid=fwclientid;
76-
oauthConfig.fwclientsecret=fwclientsecret;
77-
oauthConfig.tenant_id=tenantId
78-
//------------get CLI access token---------------//
79-
var getTokenObj =require('~/cartridge/scripts/oauth/tokenAPI');
80-
var getTokenResponse = getTokenObj.getToken(oauthConfig);
81-
var getTokenResponseJsonObj = JSON.parse(getTokenResponse);
82-
if(!empty(getTokenResponseJsonObj.access_token))
83-
{
84-
var tenantRegistrationObj =require('~/cartridge/scripts/oauth/tenantRegistrationAPI');
85-
var tenantRegistrationResponse = tenantRegistrationObj.tenantRegistrationfun(getTokenResponseJsonObj.access_token,shortCode,tenantId);
86-
var tenantRegistrationResponseJsonObj = JSON.parse(tenantRegistrationResponse);
87-
if(tenantRegistrationResponseJsonObj.tenantId)
88-
{
89-
var privateClientidRegistrationObj =require('~/cartridge/scripts/oauth/privateClientidRegistrationAPI');
90-
var privateClientidRegistrationResponse = privateClientidRegistrationObj.privateClientidRegistrationfun(getTokenResponseJsonObj.access_token,tenantId,fwclientid,fwclientsecret,callbackUrl,shortCode);
91-
var privateClientidRegistrationResponseObj= JSON.parse(privateClientidRegistrationResponse);
92-
if(privateClientidRegistrationResponseObj.clientId)
93-
{
94-
Transaction.begin();
95-
if(oauthCOObj == null)
96-
{
97-
oauthCOObj = CustomObjectMgr.createCustomObject('FireworkOauthCO',dw.system.Site.current.ID);
98-
}
99-
oauthCOObj.custom.fireworkClientId =fwclientid;
100-
oauthCOObj.custom.fireworkClientSecret =fwclientsecret;
101-
oauthCOObj.custom.fireworkOrgId =fworganizationid;
102-
oauthCOObj.custom.fireworkShortCode =shortCode;
103-
oauthCOObj.custom.fireworkTenantId =tenantId;
104-
oauthCOObj.custom.fireworkCliToken =getTokenResponseJsonObj.access_token;
105-
Transaction.commit();
106-
var authorizeGuestObj =require('~/cartridge/scripts/oauth/authorizeGuestAPI');
107-
var redirectURL = authorizeGuestObj.authorizeGuestFun(fworganizationid,callbackUrl,fwclientid,shortCode);
108-
response.redirect(redirectURL);
109-
return;
110-
}
111-
}
64+
var oauthConfig = {};
65+
var shortCode = request.httpParameterMap.shortcode;
66+
var fworganizationid = request.httpParameterMap.fworganizationid;
67+
var fwclientid = request.httpParameterMap.fwclientid;
68+
var fwclientsecret = request.httpParameterMap.fwclientsecret;
69+
var tenantId = request.httpParameterMap.tenantId;
70+
var oauthCOObj = CustomObjectMgr.getCustomObject('FireworkOauthCO', dw.system.Site.current.ID);
71+
var callbackUrl = URLUtils.https('Oauth-callback').toString();
72+
callbackUrl = callbackUrl.replace(/%3b/gi, ';').replace(/%3d/gi, '=');
73+
// Remove BM specific parameters to get clean callback URL
74+
callbackUrl = callbackUrl.replace(/;app=__bm_merchant;site=[^\/]+/g, '');
75+
oauthConfig.shortCode = shortCode;
76+
oauthConfig.fworganizationid = fworganizationid;
77+
oauthConfig.fwclientid = fwclientid;
78+
oauthConfig.fwclientsecret = fwclientsecret;
79+
oauthConfig.tenant_id = tenantId
80+
//------------get CLI access token---------------//
81+
var getTokenObj = require('~/cartridge/scripts/oauth/tokenAPI');
82+
var getTokenResponse = getTokenObj.getToken(oauthConfig);
83+
var getTokenResponseJsonObj = JSON.parse(getTokenResponse);
84+
if (!empty(getTokenResponseJsonObj.access_token)) {
85+
var tenantRegistrationObj = require('~/cartridge/scripts/oauth/tenantRegistrationAPI');
86+
var tenantRegistrationResponse = tenantRegistrationObj.tenantRegistrationfun(getTokenResponseJsonObj.access_token, shortCode, tenantId);
87+
var tenantRegistrationResponseJsonObj = JSON.parse(tenantRegistrationResponse);
88+
if (tenantRegistrationResponseJsonObj.tenantId) {
89+
var privateClientidRegistrationObj = require('~/cartridge/scripts/oauth/privateClientidRegistrationAPI');
90+
var privateClientidRegistrationResponse = privateClientidRegistrationObj.privateClientidRegistrationfun(getTokenResponseJsonObj.access_token, tenantId, fwclientid, fwclientsecret, callbackUrl, shortCode);
91+
var privateClientidRegistrationResponseObj = JSON.parse(privateClientidRegistrationResponse);
92+
if (privateClientidRegistrationResponseObj.clientId) {
93+
Transaction.begin();
94+
if (oauthCOObj == null) {
95+
oauthCOObj = CustomObjectMgr.createCustomObject('FireworkOauthCO', dw.system.Site.current.ID);
11296
}
113-
return;
114-
}
115-
catch (e){
116-
var errorMsg= {
117-
status: 'failed',
118-
message:"error has occurred "+e
119-
};
97+
oauthCOObj.custom.fireworkClientId = fwclientid;
98+
oauthCOObj.custom.fireworkClientSecret = fwclientsecret;
99+
oauthCOObj.custom.fireworkOrgId = fworganizationid;
100+
oauthCOObj.custom.fireworkShortCode = shortCode;
101+
oauthCOObj.custom.fireworkTenantId = tenantId;
102+
oauthCOObj.custom.fireworkCliToken = getTokenResponseJsonObj.access_token;
103+
Transaction.commit();
104+
var authorizeGuestObj = require('~/cartridge/scripts/oauth/authorizeGuestAPI');
105+
var redirectURL = authorizeGuestObj.authorizeGuestFun(fworganizationid, callbackUrl, fwclientid, shortCode);
106+
response.redirect(redirectURL);
107+
return;
108+
}
109+
}
120110
}
121-
return;
111+
return;
112+
}
113+
catch (e) {
114+
var errorMsg = {
115+
status: 'failed',
116+
message: "error has occurred " + e
117+
};
118+
}
119+
return;
122120
}
123121
/**
124122
* This controller implements the business manager extension action for Oauth Token Process.
125123
*
126124
* @module controllers/show
127125
*/
128-
function callback()
129-
{
126+
function callback() {
130127
/* Local API Includes */
131128
try {
132-
var usid = request.httpParameterMap.usid.value;
133-
var code = request.httpParameterMap.code.value;
134-
var redirectURL=request.getHttpProtocol()+"://"+request.getHttpHost()+dw.web.URLUtils.url('Oauth-callback');
135-
var oauthCOObj = CustomObjectMgr.getCustomObject('FireworkOauthCO',dw.system.Site.current.ID);
136-
if(oauthCOObj != null)
137-
{
138-
var getTokenJSONObj = {};
139-
getTokenJSONObj.code=code;
140-
getTokenJSONObj.usid=usid;
141-
getTokenJSONObj.clientSecret=oauthCOObj.custom.fireworkClientSecret;
142-
getTokenJSONObj.clientId=oauthCOObj.custom.fireworkClientId;
143-
getTokenJSONObj.shortCode=oauthCOObj.custom.fireworkShortCode;
144-
getTokenJSONObj.fworganizationid=oauthCOObj.custom.fireworkOrgId;
145-
getTokenJSONObj.code_verifier=oauthCOObj.custom.fireworkCodeVerifier;
146-
getTokenJSONObj.redirectUrl=redirectURL;
147-
//----------get access token API call ------------------------//
148-
var accessTokenObj =require('~/cartridge/scripts/oauth/getAccessTokenAPI');
149-
var accessTokenResponse = accessTokenObj.accessTokenFun(getTokenJSONObj);
150-
var accessTokenResponseObj=JSON.parse(accessTokenResponse);
151-
var accessToken =accessTokenResponseObj.access_token;
152-
var refreshToken =accessTokenResponseObj.refresh_token;
153-
if(accessTokenResponseObj)
154-
{
155-
Transaction.begin();
156-
oauthCOObj.custom.fireworkUsId =usid;
157-
oauthCOObj.custom.fireworkCode =code;
158-
oauthCOObj.custom.fireworkAccessTokenObject=accessTokenResponseObj;
159-
Transaction.commit();
160-
var FireworkCOObj = CustomObjectMgr.getCustomObject('FireworkCO',dw.system.Site.current.ID);
161-
if(FireworkCOObj != null)
162-
{
163-
//-----------------send all data to after complete access token------------
164-
var updateGraphQLForTokenDataObj =require('~/cartridge/scripts/oauth/updateGraphQLForTokenDataAPI');
165-
var updateGraphQLForTokenDataResponse = updateGraphQLForTokenDataObj.updateGraphQLForTokenData();
166-
ISML.renderTemplate('oauth/success',{updateGraphQLForTokenDataResponse: updateGraphQLForTokenDataResponse});
167-
return;
168-
}
169-
else
170-
{
171-
ISML.renderTemplate('oauth/configDashboard');
172-
return;
173-
}
174-
}
175-
129+
var usid = request.httpParameterMap.usid.value;
130+
var code = request.httpParameterMap.code.value;
131+
var redirectURL = URLUtils.https('Oauth-callback').toString();
132+
redirectURL = redirectURL.replace(/%3b/gi, ';').replace(/%3d/gi, '=');
133+
// Remove BM specific parameters to get clean callback URL
134+
redirectURL = redirectURL.replace(/;app=__bm_merchant;site=[^\/]+/g, '');
135+
var oauthCOObj = CustomObjectMgr.getCustomObject('FireworkOauthCO', dw.system.Site.current.ID);
136+
if (oauthCOObj != null) {
137+
var getTokenJSONObj = {};
138+
getTokenJSONObj.code = code;
139+
getTokenJSONObj.usid = usid;
140+
getTokenJSONObj.clientSecret = oauthCOObj.custom.fireworkClientSecret;
141+
getTokenJSONObj.clientId = oauthCOObj.custom.fireworkClientId;
142+
getTokenJSONObj.shortCode = oauthCOObj.custom.fireworkShortCode;
143+
getTokenJSONObj.fworganizationid = oauthCOObj.custom.fireworkOrgId;
144+
getTokenJSONObj.code_verifier = oauthCOObj.custom.fireworkCodeVerifier;
145+
getTokenJSONObj.redirectUrl = redirectURL;
146+
//----------get access token API call ------------------------//
147+
var accessTokenObj = require('~/cartridge/scripts/oauth/getAccessTokenAPI');
148+
var accessTokenResponse = accessTokenObj.accessTokenFun(getTokenJSONObj);
149+
var accessTokenResponseObj = JSON.parse(accessTokenResponse);
150+
var accessToken = accessTokenResponseObj.access_token;
151+
var refreshToken = accessTokenResponseObj.refresh_token;
152+
if (accessTokenResponseObj) {
153+
Transaction.begin();
154+
oauthCOObj.custom.fireworkUsId = usid;
155+
oauthCOObj.custom.fireworkCode = code;
156+
oauthCOObj.custom.fireworkAccessTokenObject = accessTokenResponseObj;
157+
Transaction.commit();
158+
var FireworkCOObj = CustomObjectMgr.getCustomObject('FireworkCO', dw.system.Site.current.ID);
159+
if (FireworkCOObj != null) {
160+
//-----------------send all data to after complete access token------------
161+
var updateGraphQLForTokenDataObj = require('~/cartridge/scripts/oauth/updateGraphQLForTokenDataAPI');
162+
var updateGraphQLForTokenDataResponse = updateGraphQLForTokenDataObj.updateGraphQLForTokenData();
163+
ISML.renderTemplate('oauth/success', { updateGraphQLForTokenDataResponse: updateGraphQLForTokenDataResponse });
164+
return;
165+
}
166+
else {
167+
ISML.renderTemplate('oauth/configDashboard');
168+
return;
169+
}
176170
}
177-
}catch (e){
178-
var errorMsg= {
179-
status: 'failed',
180-
message:"error has occurred "+e
181-
};
182-
ISML.renderTemplate('oauth/errorMsg',{errorMsg:errorMsg});
183-
return;
171+
184172
}
173+
} catch (e) {
174+
var errorMsg = {
175+
status: 'failed',
176+
message: "error has occurred " + e
177+
};
178+
ISML.renderTemplate('oauth/errorMsg', { errorMsg: errorMsg });
179+
return;
180+
}
185181
return;
186182
}
187183
exports.success = guard.ensure(['post'], success);

0 commit comments

Comments
 (0)