Просмотр исходного кода

fix: The /logout route should always full page reload (#10277)

Johannes Schill 8 лет назад
Родитель
Сommit
a55b42d11f
1 измененных файлов с 9 добавлено и 2 удалено
  1. 9 2
      public/app/core/services/global_event_srv.ts

+ 9 - 2
public/app/core/services/global_event_srv.ts

@@ -6,10 +6,13 @@ import appEvents from 'app/core/app_events';
 // Good for communication react > angular and vice verse
 export class GlobalEventSrv {
   private appSubUrl;
+  private fullPageReloadRoutes;
+
 
   /** @ngInject */
-  constructor(private $location, private $timeout) {
+  constructor(private $location, private $timeout, private $window) {
     this.appSubUrl = config.appSubUrl;
+    this.fullPageReloadRoutes = ['/logout'];
   }
 
   // Angular's $location does not like <base href...> and absolute urls
@@ -26,9 +29,13 @@ export class GlobalEventSrv {
   init() {
     appEvents.on('location-change', payload => {
       const urlWithoutBase = this.stripBaseFromUrl(payload.href);
+      if (this.fullPageReloadRoutes.indexOf(urlWithoutBase) > -1) {
+        this.$window.location.href = payload.href;
+        return;
+      }
 
       this.$timeout(() => { // A hack to use timeout when we're changing things (in this case the url) from outside of Angular.
-          this.$location.url(urlWithoutBase);
+        this.$location.url(urlWithoutBase);
       });
     });
   }