This is an automated email from the ASF dual-hosted git repository. jleroux pushed a commit to branch release17.12 in repository https://gitbox.apache.org/repos/asf/ofbiz-framework.git
commit 6ce10278a391a5c588d7a97f6e779c4e4256f5d2 Author: Jacques Le Roux <[email protected]> AuthorDate: Wed Feb 5 09:30:55 2020 +0100 Fixed: setUserTimeZone should ran only once based on error (OFBIZ-11329) This will be notably useful when committing CSRF solution as explained in OFBIZ-11306: SetTimeZoneFromBrowser when starting gives a RequestHandlerException: Invalid or missing CSRF token for AJAX call to path '/SetTimeZoneFromBrowser'. Also not only when starting. Thanks: James Yong for review (cherry picked from commit 350c71f4df45cbe5671b54e61f74f9a352d78e05) # Conflicts: # framework/common/groovyScripts/SetLocaleFromBrowser.groovy # themes/common-theme/webapp/common/js/util/setUserTimeZone.js replaced by setUserLocale.js modified by hand I can compile locally but I can see a reason why and certainly not related to these changes --- .../groovyScripts/SetLocaleFromBrowser.groovy | 5 +++-- .../common/webapp/common/js/util/setUserLocale.js | 25 ++++++++++++---------- 2 files changed, 17 insertions(+), 13 deletions(-) diff --git a/framework/common/groovyScripts/SetLocaleFromBrowser.groovy b/framework/common/groovyScripts/SetLocaleFromBrowser.groovy index 9e00511..690d06b 100644 --- a/framework/common/groovyScripts/SetLocaleFromBrowser.groovy +++ b/framework/common/groovyScripts/SetLocaleFromBrowser.groovy @@ -20,13 +20,14 @@ import org.apache.ofbiz.service.ServiceUtil public Map setLocaleFromBrowser() { - Map results = ServiceUtil.returnSuccess() userLogin = from("UserLogin").where("userLoginId", parameters.userLogin.userLoginId).queryFirst(); if (userLogin) { if (!userLogin.lastTimeZone || "null".equals(userLogin.lastTimeZone)) { userLogin.lastTimeZone = parameters.localeName userLogin.store() + return ServiceUtil.returnSuccess() } + } else { + return ServiceUtil.returnError() } - return results } diff --git a/themes/common/webapp/common/js/util/setUserLocale.js b/themes/common/webapp/common/js/util/setUserLocale.js index 4d0676c..0f32dba 100644 --- a/themes/common/webapp/common/js/util/setUserLocale.js +++ b/themes/common/webapp/common/js/util/setUserLocale.js @@ -17,15 +17,18 @@ specific language governing permissions and limitations under the License. */ -var timezone = moment.tz.guess(); -$.ajax({ - url: "setLocaleFromBrowser", - type: "POST", - async: false, - data: "localeName=" + timezone, - error: function(error) { - if (error != "") { - console.error("Error while setting user locale: ", error); +// Only once by session (ref https://developer.mozilla.org/en-US/docs/Web/API/Window/sessionStorage) +if (sessionStorage.getItem("setLocaleFromBrowser") === null || sessionStorage.getItem("setLocaleFromBrowser") !== "done") { + var timezone = moment.tz.guess(); + $.ajax({ + url: "setLocaleFromBrowser", + type: "POST", + async: false, + data: "localeName=" + timezone, + success: function(success) { + if (success._ERROR_MESSAGE_ === undefined && success._ERROR_MESSAGE_LIST_ === undefined) { + sessionStorage.setItem("setLocaleFromBrowser", "done"); + } } - } -}); + }); +}

