From c75e669204ffd050e3ef23fdab516c425f7fb668 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Torkel=20=C3=96degaard?= Date: Wed, 28 Jan 2015 11:33:12 +0100 Subject: [PATCH] Hide sidemenu links that the user does not have access to --- src/app/controllers/grafanaCtrl.js | 6 +-- src/app/controllers/sidemenuCtrl.js | 68 +++++++++++++++++++---------- src/app/partials/sidemenu.html | 5 ++- 3 files changed, 50 insertions(+), 29 deletions(-) diff --git a/src/app/controllers/grafanaCtrl.js b/src/app/controllers/grafanaCtrl.js index d2047cfef30..9643328e5a3 100644 --- a/src/app/controllers/grafanaCtrl.js +++ b/src/app/controllers/grafanaCtrl.js @@ -28,6 +28,7 @@ function (angular, config, _, $, store) { $scope.dashAlerts = alertSrv; $scope.grafana.style = 'dark'; + $scope.grafana.user = {}; if (window.grafanaBackend) { $scope.initBackendFeatures(); @@ -36,10 +37,7 @@ function (angular, config, _, $, store) { $scope.initBackendFeatures = function() { $scope.grafana.sidemenu = store.getBool('grafana.sidemenu'); - - if (window.grafanaBootData.user.login) { - $scope.grafana.user = window.grafanaBootData.user; - } + $scope.grafana.user = window.grafanaBootData.user; $scope.onAppEvent('logged-out', function() { $scope.grafana.sidemenu = false; diff --git a/src/app/controllers/sidemenuCtrl.js b/src/app/controllers/sidemenuCtrl.js index 10b73e2458a..28e826646e8 100644 --- a/src/app/controllers/sidemenuCtrl.js +++ b/src/app/controllers/sidemenuCtrl.js @@ -15,39 +15,59 @@ function (angular, _, $, config) { return config.appSubUrl + url; }; - $scope.menu = [ - { - text: "Dashbord", - href: $scope.getUrl("/"), - startsWith: config.appSubUrl + '/dashboard/', - icon: "fa fa-th-large", - links: [ - { text: 'Settings', editview: 'settings', icon: "fa fa-cogs" }, - { text: 'Templating', editview: 'templating', icon: "fa fa-cogs" }, - { text: 'Annotations', editview: 'annotations', icon: "fa fa-bolt" }, - { text: 'Export', href:"", icon: "fa fa-bolt" }, - { text: 'JSON', href:"", icon: "fa fa-bolt" }, - ] - }, - { + $scope.menu = []; + $scope.menu.push({ + text: "Dashbord", + href: $scope.getUrl("/"), + startsWith: config.appSubUrl + '/dashboard/', + icon: "fa fa-th-large", + links: [ + { text: 'Settings', editview: 'settings'}, + { text: 'Templating', editview: 'templating'}, + { text: 'Annotations', editview: 'annotations'}, + { text: 'Export', href:""}, + { text: 'JSON', href:""}, + ] + }); + + if ($scope.grafana.user.accountRole === 'Admin') { + $scope.menu.push({ text: "Account", href: $scope.getUrl("/account"), + requireRole: "Admin", icon: "fa fa-shield", links: [ - { text: 'Info', href: $scope.getUrl("/account"), icon: "fa fa-sitemap" }, - { text: 'Data sources', href: $scope.getUrl("/account/datasources"), icon: "fa fa-sitemap" }, - { text: 'Users', href: $scope.getUrl("/account/users"), icon: "fa fa-users" }, - { text: 'API Keys', href: $scope.getUrl("/account/apikeys"), icon: "fa fa-key" }, + { text: 'Info', href: $scope.getUrl("/account")}, + { text: 'Data sources', href: $scope.getUrl("/account/datasources")}, + { text: 'Users', href: $scope.getUrl("/account/users")}, + { text: 'API Keys', href: $scope.getUrl("/account/apikeys")}, ] - }, - { + }); + } + + if ($scope.grafana.user.isSignedIn) { + $scope.menu.push({ text: "Profile", href: $scope.getUrl("/profile"), icon: "fa fa-user", + requireSignedIn: true, links: [ - { text: 'Info', href: $scope.getUrl("/profile"), icon: "fa fa-sitemap" }, + { text: 'Info', href: $scope.getUrl("/profile"), icon: "fa fa-sitemap" }, { text: 'Password', href:"", icon: "fa fa-lock" }, ] - } - ]; + }); + } + + if ($scope.grafana.user.isGrafanaAdmin) { + $scope.menu.push({ + text: "Admin", href: $scope.getUrl("/admin/users"), + icon: "fa fa-cube", + requireSignedIn: true, + links: [ + { text: 'Settings', href: $scope.getUrl("/admin/settings")}, + { text: 'Users', href: $scope.getUrl("/admin/users"), icon: "fa fa-lock" }, + { text: 'Log', href: "", icon: "fa fa-lock" }, + ] + }); + } $scope.onAppEvent('$routeUpdate', function() { $scope.updateState(); diff --git a/src/app/partials/sidemenu.html b/src/app/partials/sidemenu.html index 0ba9c642686..692518ddf4d 100644 --- a/src/app/partials/sidemenu.html +++ b/src/app/partials/sidemenu.html @@ -1,7 +1,7 @@
+
  • + Sign in +
  • {{item.text}}