diff --git a/Metadata/site_template/meta/system-objecttype-extensions.xml b/Metadata/site_template/meta/system-objecttype-extensions.xml
index 6800085..de03b7e 100644
--- a/Metadata/site_template/meta/system-objecttype-extensions.xml
+++ b/Metadata/site_template/meta/system-objecttype-extensions.xml
@@ -216,6 +216,13 @@
false
false
+
+ Supported ReachFive Social Provider Names
+ Whitelist of allowed social provider names.
+ set-of-string
+ true
+ false
+
Web UI SDK Url
ReachFive Web UI SDK Url.
@@ -471,6 +478,7 @@
+
diff --git a/Metadata/site_template/sites/RefArch/preferences.xml b/Metadata/site_template/sites/RefArch/preferences.xml
index 18a4083..7c11ec0 100644
--- a/Metadata/site_template/sites/RefArch/preferences.xml
+++ b/Metadata/site_template/sites/RefArch/preferences.xml
@@ -49,6 +49,31 @@
it
nl
+
+ akamai
+ amazon
+ apple
+ bconnect
+ facebook
+ franceconnect
+ google
+ kakaotalk
+ line
+ linkedin
+ mailru
+ microsoft
+ naver
+ okta
+ oney
+ paypal
+ ping
+ qq
+ tiktok
+ twitter
+ vkontakte
+ wechat
+ weibo
+
sdkUiClient.showSocialAccounts({
accessToken: accessToken,
container: 'social-accounts-container'
diff --git a/cartridges/int_reachfive/cartridge/models/reachfiveSettings.js b/cartridges/int_reachfive/cartridge/models/reachfiveSettings.js
index fa2a743..9260332 100644
--- a/cartridges/int_reachfive/cartridge/models/reachfiveSettings.js
+++ b/cartridges/int_reachfive/cartridge/models/reachfiveSettings.js
@@ -25,6 +25,7 @@ var LOGGER = require('dw/system/Logger').getLogger('loginReachFive');
* @property {string} reach5CoreSdkUrl - Web Core SDK Url
* @property {Array} reach5SupportedLanguageCodes - Supported ReachFive LanguageCodes
* @property {string} reach5DefaulLanguageCode - Default ReachFive LanguageCode
+ * @property {Array} reach5SupportedSocialNames - Supported ReachFive Social Provider Names
* @property {string} reachFiveCheckCredentials - Check credentials method
* @property {boolean} isReachFiveEmailAsLogin - Create profile with login as an email
* @property {boolean} isReachFiveReturnProviderToken - Retrieve the provider token in the SFCC session
@@ -103,6 +104,9 @@ function Settings() {
reach5DefaulLanguageCode: {
get: function () { return currentSite.getCustomPreferenceValue('reach5DefaulLanguageCode'); }
},
+ reach5SupportedSocialNames: {
+ get: function () { return currentSite.getCustomPreferenceValue('reach5SupportedSocialNames'); }
+ },
reachFiveCheckCredentials: {
get: function () {
var prefEnum = currentSite.getCustomPreferenceValue('reachFiveCheckCredentials');
diff --git a/cartridges/int_reachfive_sfra/cartridge/controllers/ReachFiveController.js b/cartridges/int_reachfive_sfra/cartridge/controllers/ReachFiveController.js
index a27dee7..ed8f7fa 100644
--- a/cartridges/int_reachfive_sfra/cartridge/controllers/ReachFiveController.js
+++ b/cartridges/int_reachfive_sfra/cartridge/controllers/ReachFiveController.js
@@ -254,6 +254,7 @@ server.get(
'InitLinkAccount',
csrfProtection.generateToken,
function (req, res, next) {
+ var reachfiveSettings = require('*/cartridge/models/reachfiveSettings');
var userName, rememberMe, ReachFivesocialName;
// Prefill login form if the user is registered
if (req.querystring.email) {
@@ -261,8 +262,10 @@ server.get(
rememberMe = true;
}
- if (req.querystring.ReachFivesocialName) {
- ReachFivesocialName = req.querystring.ReachFivesocialName;
+ var inputSocialName = req.querystring.ReachFivesocialName;
+ var supportedSocialNames = reachfiveSettings.reach5SupportedSocialNames || [];
+ if (inputSocialName && supportedSocialNames.indexOf(inputSocialName) !== -1) {
+ ReachFivesocialName = inputSocialName;
}
var rurl = req.querystring.rurl || '1';
diff --git a/cartridges/int_reachfive_sg/cartridge/controllers/ReachFiveController.js b/cartridges/int_reachfive_sg/cartridge/controllers/ReachFiveController.js
index c670746..3d87a38 100644
--- a/cartridges/int_reachfive_sg/cartridge/controllers/ReachFiveController.js
+++ b/cartridges/int_reachfive_sg/cartridge/controllers/ReachFiveController.js
@@ -350,10 +350,19 @@ function initLinkAccount() {
loginForm.setValue('rememberme', true);
}
+ var reachfiveSettings = require('*/cartridge/models/reachfiveSettings');
+ var validatedSocialName;
+
+ var inputSocialName = request.httpParameterMap.ReachFivesocialName.stringValue;
+ var supportedSocialNames = reachfiveSettings.reach5SupportedSocialNames || [];
+ if (inputSocialName && supportedSocialNames.indexOf(inputSocialName) !== -1) {
+ validatedSocialName = inputSocialName;
+ }
+
// Prepare view and render
app.getView({
RegistrationStatus: false,
- ReachFivesocialName: request.httpParameterMap.ReachFivesocialName.stringValue,
+ ReachFivesocialName: validatedSocialName,
ShowStandardLoginToLinkAccount: true,
ContinueURL: URLUtils.https('ReachFiveController-HandleLinkForm')
}).render('account/login/reachfivelinkform');