Sfoglia il codice sorgente

HUE-6711 [frontend] Render 403 page properly on Hue 4

Enrico Berti 8 anni fa
parent
commit
d191fe7

+ 6 - 2
desktop/core/src/desktop/templates/403.mako

@@ -18,7 +18,10 @@
 from django.utils.translation import ugettext as _
 from desktop.views import commonheader, commonfooter
 %>
+
+%if not is_embeddable:
 ${ commonheader(_('403 - Access forbidden'), "", user, request) | n,unicode }
+%endif
 
 <link rel="stylesheet" href="${ static('desktop/css/httperrors.css') }">
 
@@ -34,10 +37,11 @@ ${ commonheader(_('403 - Access forbidden'), "", user, request) | n,unicode }
 
       <p>${_("Sorry, you don't have permissions to access the page, or your session has expired.")}</p>
       <br/>
-      <a href="/home">${ _('Go to My documents') }</a>
+      <a href="javascript:history.back();">${_('Try to go back')}</a> ${_('or')} <a href="/home">${ _('go to My documents') }</a>
     </div>
   </div>
 </div>
 
-
+%if not is_embeddable:
 ${ commonfooter(request, messages) | n,unicode }
+%endif

+ 7 - 1
desktop/core/src/desktop/templates/hue.mako

@@ -382,6 +382,7 @@ ${ hueIcons.symbols() }
       <div id="embeddable_admin_wizard" class="embeddable"></div>
       <div id="embeddable_logs" class="embeddable"></div>
       <div id="embeddable_dump_config" class="embeddable"></div>
+      <div id="embeddable_403" class="embeddable"></div>
       <div id="embeddable_404" class="embeddable"></div>
       <div id="embeddable_500" class="embeddable"></div>
       <div id="embeddable_sqoop" class="embeddable"></div>
@@ -555,6 +556,7 @@ ${ smart_unicode(login_modal(request).content) | n,unicode }
     var onePageViewModel = (function () {
 
       var EMBEDDABLE_PAGE_URLS = {
+        403: { url: '/403', title: '403' },
         404: { url: '/404', title: '404' },
         500: { url: '/500', title: '500' },
         editor: { url: '/editor', title: '${_('Editor')}' },
@@ -826,7 +828,10 @@ ${ smart_unicode(login_modal(request).content) | n,unicode }
               },
               error: function (xhr) {
                 console.error('Route loading problem', xhr);
-                if (app !== '500'){
+                if ((xhr.status === 401 || xhr.status === 403) && app !== '403') {
+                  self.loadApp('403');
+                }
+                else if (app !== '500') {
                   self.loadApp('500');
                 }
                 else {
@@ -886,6 +891,7 @@ ${ smart_unicode(login_modal(request).content) | n,unicode }
         self.lastContext = null;
 
         var pageMapping = [
+          { url: '/403', app: '403' },
           { url: '/500', app: '500' },
           { url: '/about/', app: 'admin_wizard' },
           { url: '/about/admin_wizard', app: 'admin_wizard' },

+ 1 - 0
desktop/core/src/desktop/urls.py

@@ -94,6 +94,7 @@ dynamic_patterns += patterns('desktop.views',
   (r'^assist_m', 'assist_m'),
   # Hue 4
   (r'^hue.*/$', 'hue'),
+  (r'^403$', 'path_forbidden'),
   (r'^404$', 'not_found'),
   (r'^500$', 'server_error'),
 

+ 6 - 0
desktop/core/src/desktop/views.py

@@ -140,6 +140,12 @@ def server_error(request):
   })
 
 
+def path_forbidden(request):
+  return render('403.mako', request, {
+    'is_embeddable': request.GET.get('is_embeddable', False)
+  })
+
+
 @access_log_level(logging.WARN)
 def log_view(request):
   """