| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141 |
- commit c75e669204ffd050e3ef23fdab516c425f7fb668
- Author: Torkel Ödegaard <torkel.odegaard@gmail.com>
- Date: Wed Jan 28 11:33:12 2015 +0100
- Hide sidemenu links that the user does not have access to
- diff --git a/src/app/controllers/grafanaCtrl.js b/src/app/controllers/grafanaCtrl.js
- index d2047cfef..9643328e5 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 10b73e245..28e826646 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 0ba9c6426..692518ddf 100644
- --- a/src/app/partials/sidemenu.html
- +++ b/src/app/partials/sidemenu.html
- @@ -1,7 +1,7 @@
- <div ng-controller="SideMenuCtrl" ng-init="init()">
-
- <ul class="sidemenu">
- - <li class="dropdown">
- + <li class="dropdown" ng-if="grafana.user.isSignedIn">
- <a class="sidemenu-user pointer" data-toggle="dropdown" title="{{grafana.user.email}}">
- <span class="gravatar-missing">f</span>
- <img ng-src="{{grafana.user.gravatarUrl}}" width="35">
- @@ -11,6 +11,9 @@
- <li><a href="{{appSubUrl}}/login?logout">Logout</a></li>
- </ul>
- </li>
- + <li ng-if="!grafana.user.isSignedIn">
- + <a href="login" class="sidemenu-item"><i class="fa fa-sign-in"></i>Sign in</a>
- + </li>
- <li ng-repeat-start="item in menu" ng-class="{'active': item.active}">
- <a href="{{item.href}}" class="sidemenu-item"><i class="{{item.icon}}"></i>{{item.text}}</a>
- </li>
|