This is an automated email from the ASF dual-hosted git repository.

jleroux pushed a commit to branch release18.12
in repository https://gitbox.apache.org/repos/asf/ofbiz-framework.git

commit 91cdc817e1c6b4d45b4b9fcbc4bb1ecc28f0de23
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
---
 framework/common/groovyScripts/SetTimeZoneFromBrowser.groovy | 5 +++--
 themes/common-theme/webapp/common/js/util/setUserTimeZone.js | 9 ++++-----
 2 files changed, 7 insertions(+), 7 deletions(-)

diff --git a/framework/common/groovyScripts/SetTimeZoneFromBrowser.groovy 
b/framework/common/groovyScripts/SetTimeZoneFromBrowser.groovy
index 9a0201a..21f9607 100644
--- a/framework/common/groovyScripts/SetTimeZoneFromBrowser.groovy
+++ b/framework/common/groovyScripts/SetTimeZoneFromBrowser.groovy
@@ -20,13 +20,14 @@
 import org.apache.ofbiz.service.ServiceUtil
 
 public Map SetTimeZoneFromBrowser() {
-    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-theme/webapp/common/js/util/setUserTimeZone.js 
b/themes/common-theme/webapp/common/js/util/setUserTimeZone.js
index 4c29928..b74504b 100644
--- a/themes/common-theme/webapp/common/js/util/setUserTimeZone.js
+++ b/themes/common-theme/webapp/common/js/util/setUserTimeZone.js
@@ -17,18 +17,17 @@ specific language governing permissions and limitations
 under the License.
 */
 
-// Only once by session
+// Only once by session (ref 
https://developer.mozilla.org/en-US/docs/Web/API/Window/sessionStorage)
 if (sessionStorage.getItem("SetTimeZoneFromBrowser") === null || 
sessionStorage.getItem("SetTimeZoneFromBrowser") !== "done") {
-    sessionStorage.setItem("SetTimeZoneFromBrowser", "done");
     var timezone = moment.tz.guess();
     $.ajax({
         url: "SetTimeZoneFromBrowser",
         type: "POST",
         async: false,
         data: "localeName=" + timezone,
-        error: function(error) {
-            if (error != "") {
-                console.error("Error while setting user locale: ", error);
+        success: function(success) {
+            if (success._ERROR_MESSAGE_ === undefined && 
success._ERROR_MESSAGE_LIST_ === undefined) {
+                sessionStorage.setItem("SetTimeZoneFromBrowser", "done");
             }
         }
     });

Reply via email to