mirror of
https://github.com/grafana/grafana.git
synced 2025-07-30 09:22:21 +08:00
added an inital admin settings view, very basic right now only displays all config options in grafana.ini
This commit is contained in:
28
pkg/api/admin_settings.go
Normal file
28
pkg/api/admin_settings.go
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
package api
|
||||||
|
|
||||||
|
import (
|
||||||
|
"strings"
|
||||||
|
|
||||||
|
"github.com/grafana/grafana/pkg/middleware"
|
||||||
|
"github.com/grafana/grafana/pkg/setting"
|
||||||
|
)
|
||||||
|
|
||||||
|
func AdminGetSettings(c *middleware.Context) {
|
||||||
|
settings := make(map[string]interface{})
|
||||||
|
|
||||||
|
for _, section := range setting.Cfg.Sections() {
|
||||||
|
jsonSec := make(map[string]interface{})
|
||||||
|
settings[section.Name()] = jsonSec
|
||||||
|
|
||||||
|
for _, key := range section.Keys() {
|
||||||
|
keyName := key.Name()
|
||||||
|
value := key.Value()
|
||||||
|
if strings.Contains(keyName, "secret") || strings.Contains(keyName, "password") {
|
||||||
|
value = "************"
|
||||||
|
}
|
||||||
|
jsonSec[keyName] = value
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
c.JSON(200, settings)
|
||||||
|
}
|
@ -30,6 +30,7 @@ func Register(r *macaron.Macaron) {
|
|||||||
r.Get("/account/users/", reqSignedIn, Index)
|
r.Get("/account/users/", reqSignedIn, Index)
|
||||||
r.Get("/account/apikeys/", reqSignedIn, Index)
|
r.Get("/account/apikeys/", reqSignedIn, Index)
|
||||||
r.Get("/account/import/", reqSignedIn, Index)
|
r.Get("/account/import/", reqSignedIn, Index)
|
||||||
|
r.Get("/admin/settings", reqGrafanaAdmin, Index)
|
||||||
r.Get("/admin/users", reqGrafanaAdmin, Index)
|
r.Get("/admin/users", reqGrafanaAdmin, Index)
|
||||||
r.Get("/admin/users/create", reqGrafanaAdmin, Index)
|
r.Get("/admin/users/create", reqGrafanaAdmin, Index)
|
||||||
r.Get("/admin/users/edit/:id", reqGrafanaAdmin, Index)
|
r.Get("/admin/users/edit/:id", reqGrafanaAdmin, Index)
|
||||||
@ -94,6 +95,7 @@ func Register(r *macaron.Macaron) {
|
|||||||
|
|
||||||
// admin api
|
// admin api
|
||||||
r.Group("/api/admin", func() {
|
r.Group("/api/admin", func() {
|
||||||
|
r.Get("/settings", AdminGetSettings)
|
||||||
r.Get("/users", AdminSearchUsers)
|
r.Get("/users", AdminSearchUsers)
|
||||||
r.Get("/users/:id", AdminGetUser)
|
r.Get("/users/:id", AdminGetUser)
|
||||||
r.Post("/users", bind(dtos.AdminCreateUserForm{}), AdminCreateUser)
|
r.Post("/users", bind(dtos.AdminCreateUserForm{}), AdminCreateUser)
|
||||||
|
@ -40,11 +40,6 @@ function (angular, _, $, config) {
|
|||||||
text: "Admin", href: $scope.getUrl("/admin/users"),
|
text: "Admin", href: $scope.getUrl("/admin/users"),
|
||||||
icon: "fa fa-cube",
|
icon: "fa fa-cube",
|
||||||
requireSignedIn: true,
|
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" },
|
|
||||||
]
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
7
src/app/features/account/all.js
Normal file
7
src/app/features/account/all.js
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
define([
|
||||||
|
'./accountUsersCtrl',
|
||||||
|
'./datasourcesCtrl',
|
||||||
|
'./apiKeysCtrl',
|
||||||
|
'./importCtrl',
|
||||||
|
'./accountCtrl',
|
||||||
|
], function () {});
|
@ -1,18 +0,0 @@
|
|||||||
define([
|
|
||||||
'angular',
|
|
||||||
],
|
|
||||||
function (angular) {
|
|
||||||
'use strict';
|
|
||||||
|
|
||||||
var module = angular.module('grafana.controllers');
|
|
||||||
|
|
||||||
module.controller('AdminCtrl', function($scope) {
|
|
||||||
|
|
||||||
$scope.init = function() {
|
|
||||||
$scope.editor = {index: 0};
|
|
||||||
};
|
|
||||||
|
|
||||||
$scope.init();
|
|
||||||
|
|
||||||
});
|
|
||||||
});
|
|
25
src/app/features/admin/adminSettingsCtrl.js
Normal file
25
src/app/features/admin/adminSettingsCtrl.js
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
define([
|
||||||
|
'angular',
|
||||||
|
],
|
||||||
|
function (angular) {
|
||||||
|
'use strict';
|
||||||
|
|
||||||
|
var module = angular.module('grafana.controllers');
|
||||||
|
|
||||||
|
module.controller('AdminSettingsCtrl', function($scope, backendSrv) {
|
||||||
|
|
||||||
|
$scope.init = function() {
|
||||||
|
$scope.accounts = [];
|
||||||
|
$scope.getUsers();
|
||||||
|
};
|
||||||
|
|
||||||
|
$scope.getUsers = function() {
|
||||||
|
backendSrv.get('/api/admin/settings').then(function(settings) {
|
||||||
|
$scope.settings = settings;
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
$scope.init();
|
||||||
|
|
||||||
|
});
|
||||||
|
});
|
5
src/app/features/admin/all.js
Normal file
5
src/app/features/admin/all.js
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
define([
|
||||||
|
'./adminUsersCtrl',
|
||||||
|
'./adminEditUserCtrl',
|
||||||
|
'./adminSettingsCtrl',
|
||||||
|
], function () {});
|
@ -1,10 +0,0 @@
|
|||||||
<topnav icon="fa fa-cube" title="Admin" subnav="true">
|
|
||||||
<ul class="nav">
|
|
||||||
<li class="active"><a href="admin">Settings</a></li>
|
|
||||||
<li><a href="admin/users">Users</a></li>
|
|
||||||
</ul>
|
|
||||||
</topnav>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="gf-box" style="min-height: 500px">
|
|
||||||
</div>
|
|
@ -1,6 +1,6 @@
|
|||||||
<topnav icon="fa fa-cube" title="Admin" subnav="true">
|
<topnav icon="fa fa-cube" title="Admin" subnav="true">
|
||||||
<ul class="nav">
|
<ul class="nav">
|
||||||
<li><a href="admin">Settings</a></li>
|
<li><a href="admin/settings">Settings</a></li>
|
||||||
<li><a href="admin/users">Users</a></li>
|
<li><a href="admin/users">Users</a></li>
|
||||||
<li ng-class="{active: createMode}"><a href="admin/users/create">Create user</a></li>
|
<li ng-class="{active: createMode}"><a href="admin/users/create">Create user</a></li>
|
||||||
<li class="active" ng-show="!createMode"><a href="admin/users/edit/{{user_id}}">Edit user</a></li>
|
<li class="active" ng-show="!createMode"><a href="admin/users/edit/{{user_id}}">Edit user</a></li>
|
||||||
|
34
src/app/features/admin/partials/settings.html
Normal file
34
src/app/features/admin/partials/settings.html
Normal file
@ -0,0 +1,34 @@
|
|||||||
|
<topnav icon="fa fa-cube" title="Admin" subnav="true">
|
||||||
|
<ul class="nav">
|
||||||
|
<li class="active"><a href="admin/settings">Settings</a></li>
|
||||||
|
<li><a href="admin/users">Users</a></li>
|
||||||
|
<li><a href="admin/users/create">Create user</a></li>
|
||||||
|
</ul>
|
||||||
|
</topnav>
|
||||||
|
|
||||||
|
<div class="page-container">
|
||||||
|
<div class="page">
|
||||||
|
<h2>
|
||||||
|
System settings
|
||||||
|
</h2>
|
||||||
|
|
||||||
|
<div class="grafana-info-box span8" style="margin: 20px 0 25px 0">
|
||||||
|
These system settings are defined in grafana.ini or grafana.custom.ini (or overriden in ENV variables).
|
||||||
|
To change these you currently need to restart grafana.
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<table class="grafana-options-table">
|
||||||
|
<tr ng-repeat-start="(secName, secValue) in settings">
|
||||||
|
<td class="admin-settings-section">{{secName}}</td>
|
||||||
|
<td></td>
|
||||||
|
</tr>
|
||||||
|
<tr ng-repeat="(keyName, keyValue) in secValue" ng-repeat-end>
|
||||||
|
<td style="padding-left: 25px;">{{keyName}}</td>
|
||||||
|
<td>{{keyValue}}</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
|||||||
<topnav icon="fa fa-cube" title="Admin" subnav="true">
|
<topnav icon="fa fa-cube" title="Admin" subnav="true">
|
||||||
<ul class="nav">
|
<ul class="nav">
|
||||||
<li><a href="admin">Settings</a></li>
|
<li><a href="admin/settings">Settings</a></li>
|
||||||
<li class="active"><a href="admin/users">Users</a></li>
|
<li class="active"><a href="admin/users">Users</a></li>
|
||||||
<li><a href="admin/users/create">Create user</a></li>
|
<li><a href="admin/users/create">Create user</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
|
@ -9,13 +9,7 @@ define([
|
|||||||
'./dashboard/all',
|
'./dashboard/all',
|
||||||
'./panel/all',
|
'./panel/all',
|
||||||
'./profile/profileCtrl',
|
'./profile/profileCtrl',
|
||||||
'./account/accountUsersCtrl',
|
'./account/all',
|
||||||
'./account/datasourcesCtrl',
|
'./admin/all',
|
||||||
'./account/apiKeysCtrl',
|
|
||||||
'./account/importCtrl',
|
|
||||||
'./account/accountCtrl',
|
|
||||||
'./admin/adminUsersCtrl',
|
|
||||||
'./admin/adminCtrl',
|
|
||||||
'./admin/adminEditUserCtrl',
|
|
||||||
'./grafanaDatasource/datasource',
|
'./grafanaDatasource/datasource',
|
||||||
], function () {});
|
], function () {});
|
||||||
|
@ -54,9 +54,9 @@ define([
|
|||||||
templateUrl: 'app/features/profile/partials/profile.html',
|
templateUrl: 'app/features/profile/partials/profile.html',
|
||||||
controller : 'ProfileCtrl',
|
controller : 'ProfileCtrl',
|
||||||
})
|
})
|
||||||
.when('/admin', {
|
.when('/admin/settings', {
|
||||||
templateUrl: 'app/features/admin/partials/admin.html',
|
templateUrl: 'app/features/admin/partials/settings.html',
|
||||||
controller : 'AdminCtrl',
|
controller : 'AdminSettingsCtrl',
|
||||||
})
|
})
|
||||||
.when('/admin/users', {
|
.when('/admin/users', {
|
||||||
templateUrl: 'app/features/admin/partials/users.html',
|
templateUrl: 'app/features/admin/partials/users.html',
|
||||||
|
10
src/css/less/admin.less
Normal file
10
src/css/less/admin.less
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
|
||||||
|
.admin-settings-section {
|
||||||
|
color: @variable;
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
|
||||||
|
td.admin-settings-key {
|
||||||
|
padding-left: 20px;
|
||||||
|
}
|
||||||
|
|
@ -12,6 +12,7 @@
|
|||||||
@import "navbar.less";
|
@import "navbar.less";
|
||||||
@import "gfbox.less";
|
@import "gfbox.less";
|
||||||
@import "dashlist.less";
|
@import "dashlist.less";
|
||||||
|
@import "admin.less";
|
||||||
|
|
||||||
.row-control-inner {
|
.row-control-inner {
|
||||||
padding:0px;
|
padding:0px;
|
||||||
|
Reference in New Issue
Block a user