소스 검색

[frontend] Make sure CSRF token is present before mounting web components

This also takes care of an issue where web components are mounted before knockout is activated for the page.
Johan Åhlén 5 년 전
부모
커밋
ef097a6be6
2개의 변경된 파일27개의 추가작업 그리고 20개의 파일을 삭제
  1. 24 20
      desktop/core/src/desktop/templates/common_header_footer_components.mako
  2. 3 0
      desktop/core/src/desktop/templates/hue.mako

+ 24 - 20
desktop/core/src/desktop/templates/common_header_footer_components.mako

@@ -61,27 +61,8 @@ else:
   </script>
 </%def>
 
-<%def name="header_pollers(user, is_s3_enabled, apps)">
+<%def name="ajax_interceptors()">
   <script type="text/javascript">
-    Dropzone.autoDiscover = false;
-    moment.locale(window.navigator.userLanguage || window.navigator.language);
-    localeFormat = function (time) {
-      var mTime = time;
-      if (typeof ko !== 'undefined' && ko.isObservable(time)) {
-        mTime = time();
-      }
-      try {
-        mTime = new Date(mTime);
-        if (moment(mTime).isValid()) {
-          return moment.utc(mTime).local().format("L LT Z"); // [Local Date] [Local Time] [Timezone offset]
-        }
-      }
-      catch (e) {
-        return mTime;
-      }
-      return mTime;
-    };
-
     // Catches HTTP 502 errors
     function xhrOnreadystatechange() {
       if (this.readyState === 4 && this.status === 502) {
@@ -120,6 +101,29 @@ else:
       return xhrSend.apply(this, arguments);
     };
     XMLHttpRequest.prototype.isAugmented = true;
+  </script>
+</%def>
+
+<%def name="header_pollers(user, is_s3_enabled, apps)">
+  <script type="text/javascript">
+    Dropzone.autoDiscover = false;
+    moment.locale(window.navigator.userLanguage || window.navigator.language);
+    localeFormat = function (time) {
+      var mTime = time;
+      if (typeof ko !== 'undefined' && ko.isObservable(time)) {
+        mTime = time();
+      }
+      try {
+        mTime = new Date(mTime);
+        if (moment(mTime).isValid()) {
+          return moment.utc(mTime).local().format("L LT Z"); // [Local Date] [Local Time] [Timezone offset]
+        }
+      }
+      catch (e) {
+        return mTime;
+      }
+      return mTime;
+    };
 
     $.fn.dataTableExt.sErrMode = "throw";
 

+ 3 - 0
desktop/core/src/desktop/templates/hue.mako

@@ -77,6 +77,7 @@
   <link rel="stylesheet" href="${ static('desktop/ext/css/bootstrap-fileupload.css') }" >
 
   ${ commonHeaderFooterComponents.header_i18n_redirection() }
+  ${ commonHeaderFooterComponents.ajax_interceptors() }
   <%
     global_constants_url = '/desktop/globalJsConstants.js?v=' + hue_version()
   %>
@@ -170,7 +171,9 @@ ${ hueIcons.symbols() }
         <a href="javascript:void(0);" style="z-index: 1002; display: none;" title="${_('Show Assist')}" class="pointer side-panel-toggle show-left-side-panel" data-bind="visible: !leftAssistVisible(), toggle: leftAssistVisible"><i class="fa fa-chevron-right"></i></a>
         <a href="javascript:void(0);" style="display: none; opacity: 0;" title="${_('Hide Assist')}" class="pointer side-panel-toggle hide-left-side-panel" data-bind="visible: leftAssistVisible, toggle: leftAssistVisible"><i class="fa fa-chevron-left"></i></a>
         <!-- ko if: window.USE_NEW_ASSIST_PANEL -->
+% if conf.USE_NEW_ASSIST_PANEL.get():
           <assist-panel-web-component></assist-panel-web-component>
+% endif
         <!-- /ko -->
         <!-- ko ifnot: window.USE_NEW_ASSIST_PANEL -->
         <div class="assist" data-bind="component: {