Browse Source

added an inital admin settings view, very basic right now only displays all config options in grafana.ini

Torkel Ödegaard 11 years ago
parent
commit
e65a6cc063

+ 28 - 0
pkg/api/admin_settings.go

@@ -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)
+}

+ 2 - 0
pkg/api/api.go

@@ -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)

+ 0 - 5
src/app/controllers/sidemenuCtrl.js

@@ -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 - 0
src/app/features/account/all.js

@@ -0,0 +1,7 @@
+define([
+  './accountUsersCtrl',
+  './datasourcesCtrl',
+  './apiKeysCtrl',
+  './importCtrl',
+  './accountCtrl',
+], function () {});

+ 0 - 18
src/app/features/admin/adminCtrl.js

@@ -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 - 0
src/app/features/admin/adminSettingsCtrl.js

@@ -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 - 0
src/app/features/admin/all.js

@@ -0,0 +1,5 @@
+define([
+  './adminUsersCtrl',
+  './adminEditUserCtrl',
+  './adminSettingsCtrl',
+], function () {});

+ 0 - 10
src/app/features/admin/partials/admin.html

@@ -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 - 1
src/app/features/admin/partials/edit_user.html

@@ -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 - 0
src/app/features/admin/partials/settings.html

@@ -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 - 1
src/app/features/admin/partials/users.html

@@ -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>

+ 2 - 8
src/app/features/all.js

@@ -9,13 +9,7 @@ define([
   './dashboard/all',
   './dashboard/all',
   './panel/all',
   './panel/all',
   './profile/profileCtrl',
   './profile/profileCtrl',
-  './account/accountUsersCtrl',
-  './account/datasourcesCtrl',
-  './account/apiKeysCtrl',
-  './account/importCtrl',
-  './account/accountCtrl',
-  './admin/adminUsersCtrl',
-  './admin/adminCtrl',
-  './admin/adminEditUserCtrl',
+  './account/all',
+  './admin/all',
   './grafanaDatasource/datasource',
   './grafanaDatasource/datasource',
 ], function () {});
 ], function () {});

+ 3 - 3
src/app/routes/backend/all.js

@@ -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', {
-        templateUrl: 'app/features/admin/partials/admin.html',
-        controller : 'AdminCtrl',
+      .when('/admin/settings', {
+        templateUrl: 'app/features/admin/partials/settings.html',
+        controller : 'AdminSettingsCtrl',
       })
       })
       .when('/admin/users', {
       .when('/admin/users', {
         templateUrl: 'app/features/admin/partials/users.html',
         templateUrl: 'app/features/admin/partials/users.html',

+ 10 - 0
src/css/less/admin.less

@@ -0,0 +1,10 @@
+
+.admin-settings-section {
+  color: @variable;
+  font-weight: bold;
+}
+
+td.admin-settings-key {
+  padding-left: 20px;
+}
+

+ 1 - 0
src/css/less/grafana.less

@@ -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;