Commit c75e6692 by Torkel Ödegaard

Hide sidemenu links that the user does not have access to

parent 1758412a
......@@ -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;
......
......@@ -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();
......
<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>
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment