From 984ece646f831678c5a8f32e4a69f54fdad914c4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Torkel=20=C3=96degaard?= Date: Fri, 16 Jan 2015 15:21:07 +0100 Subject: [PATCH] Get access denied when trying to save from collaboration role viewer --- src/app/features/account/accountCtrl.js | 1 - .../features/grafanaDatasource/datasource.js | 4 ++ src/app/services/backendSrv.js | 54 +++++++++++-------- 3 files changed, 36 insertions(+), 23 deletions(-) diff --git a/src/app/features/account/accountCtrl.js b/src/app/features/account/accountCtrl.js index 5d76445866c..069d0c29096 100644 --- a/src/app/features/account/accountCtrl.js +++ b/src/app/features/account/accountCtrl.js @@ -9,7 +9,6 @@ function (angular) { module.controller('AccountCtrl', function($scope, $http, backendSrv) { $scope.collaborator = {}; - $scope.showTokens = false; $scope.init = function() { $scope.getAccount(); diff --git a/src/app/features/grafanaDatasource/datasource.js b/src/app/features/grafanaDatasource/datasource.js index 98bbe7b653a..329b430985c 100644 --- a/src/app/features/grafanaDatasource/datasource.js +++ b/src/app/features/grafanaDatasource/datasource.js @@ -52,6 +52,10 @@ function (angular, _, kbn) { return backendSrv.post('/api/dashboard/', { dashboard: dashboard }) .then(function(data) { return { title: dashboard.title, url: '/dashboard/db/' + data.slug }; + }, function(err) { + err.isHandled = true; + err.data = err.data || {}; + throw err.data.message || "Unknown error"; }); }; diff --git a/src/app/services/backendSrv.js b/src/app/services/backendSrv.js index 9a02ace4ff0..2b982be1fe7 100644 --- a/src/app/services/backendSrv.js +++ b/src/app/services/backendSrv.js @@ -8,7 +8,8 @@ function (angular, _, config) { var module = angular.module('grafana.services'); - module.service('backendSrv', function($http, alertSrv) { + module.service('backendSrv', function($http, alertSrv, $timeout) { + var self = this; this.get = function(url, params) { return this.request({ method: 'GET', url: url, params: params }); @@ -26,6 +27,31 @@ function (angular, _, config) { return this.request({ method: 'PUT', url: url, data: data }); }; + this._handleError = function(err) { + if (err.status === 422) { + alertSrv.set("Validation failed", "", "warning", 4000); + throw err.data; + } + + var data = err.data || { message: 'Unexpected error' }; + + if (_.isString(data)) { + data = { message: data }; + } + + data.severity = 'error'; + + if (err.status < 500) { + data.severity = "warning"; + } + + if (data.message) { + alertSrv.set("Problem!", data.message, data.severity, 10000); + } + + throw data; + }; + this.request = function(options) { var httpOptions = { url: config.appSubUrl + options.url, @@ -42,28 +68,12 @@ function (angular, _, config) { } return results.data; }, function(err) { - if (err.status === 422) { - alertSrv.set("Validation failed", "", "warning", 4000); - throw err.data; - } + $timeout(function() { + if (err.isHandled) { return; } + self._handleError(err); + }, 50); - var data = err.data || { message: 'Unexpected error' }; - - if (_.isString(data)) { - data = { message: data }; - } - - data.severity = 'error'; - - if (err.status < 500) { - data.severity = "warning"; - } - - if (data.message) { - alertSrv.set("Problem!", data.message, data.severity, 10000); - } - - throw data; + throw err; }); };