Browse Source

Small improvement to dashboard loading error handling

Torkel Ödegaard 11 years ago
parent
commit
b83367063e
2 changed files with 9 additions and 9 deletions
  1. 1 2
      pkg/middleware/auth.go
  2. 8 7
      public/app/routes/dashLoadControllers.js

+ 1 - 2
pkg/middleware/auth.go

@@ -42,6 +42,7 @@ func authDenied(c *Context) {
 		return
 	}
 
+	c.SetCookie("redirect_to", url.QueryEscape(setting.AppSubUrl+c.Req.RequestURI), 0, setting.AppSubUrl+"/")
 	c.Redirect(setting.AppSubUrl + "/login")
 }
 
@@ -63,13 +64,11 @@ func RoleAuth(roles ...m.RoleType) macaron.Handler {
 func Auth(options *AuthOptions) macaron.Handler {
 	return func(c *Context) {
 		if !c.IsGrafanaAdmin && options.ReqGrafanaAdmin {
-			c.SetCookie("redirect_to", url.QueryEscape(setting.AppSubUrl+c.Req.RequestURI), 0, setting.AppSubUrl+"/")
 			authDenied(c)
 			return
 		}
 
 		if !c.IsSignedIn && options.ReqSignedIn && !c.AllowAnonymous {
-			c.SetCookie("redirect_to", url.QueryEscape(setting.AppSubUrl+c.Req.RequestURI), 0, setting.AppSubUrl+"/")
 			authDenied(c)
 			return
 		}

+ 8 - 7
public/app/routes/dashLoadControllers.js

@@ -12,12 +12,15 @@ function (angular, _, kbn, moment, $) {
 
   module.controller('DashFromDBCtrl', function($scope, $routeParams, backendSrv) {
 
+    function dashboardLoadFailed(title) {
+      $scope.initDashboard({meta: {}, model: {title: title}}, $scope);
+    }
+
     if (!$routeParams.slug) {
       backendSrv.get('/api/dashboards/home').then(function(result) {
         $scope.initDashboard(result, $scope);
       },function() {
-        $scope.initDashboard({}, $scope);
-        $scope.appEvent('alert-error', ['Load dashboard failed', '']);
+        dashboardLoadFailed('Not found');
       });
 
       return;
@@ -26,17 +29,15 @@ function (angular, _, kbn, moment, $) {
     return backendSrv.getDashboard($routeParams.slug).then(function(result) {
       $scope.initDashboard(result, $scope);
     }, function() {
-      $scope.initDashboard({
-        meta: {},
-        model: { title: 'Not found' }
-      }, $scope);
+      dashboardLoadFailed('Not found');
     });
+
   });
 
   module.controller('DashFromSnapshotCtrl', function($scope, $routeParams, backendSrv) {
     backendSrv.get('/api/snapshots/' + $routeParams.key).then(function(result) {
       $scope.initDashboard(result, $scope);
-    },function() {
+    }, function() {
       $scope.initDashboard({meta: {isSnapshot: true}, model: {title: 'Snapshot not found'}}, $scope);
     });
   });