Kaynağa Gözat

Merge branch 'with_credentials' of https://github.com/mtanda/grafana into mtanda-with_credentials

Torkel Ödegaard 10 yıl önce
ebeveyn
işleme
2dba2f4a95

+ 1 - 0
pkg/api/datasources.go

@@ -65,6 +65,7 @@ func GetDataSourceById(c *middleware.Context) Response {
 		BasicAuth:         ds.BasicAuth,
 		BasicAuth:         ds.BasicAuth,
 		BasicAuthUser:     ds.BasicAuthUser,
 		BasicAuthUser:     ds.BasicAuthUser,
 		BasicAuthPassword: ds.BasicAuthPassword,
 		BasicAuthPassword: ds.BasicAuthPassword,
+		WithCredentials:   ds.WithCredentials,
 		IsDefault:         ds.IsDefault,
 		IsDefault:         ds.IsDefault,
 		JsonData:          ds.JsonData,
 		JsonData:          ds.JsonData,
 	})
 	})

+ 1 - 0
pkg/api/dtos/models.go

@@ -61,6 +61,7 @@ type DataSource struct {
 	BasicAuth         bool                   `json:"basicAuth"`
 	BasicAuth         bool                   `json:"basicAuth"`
 	BasicAuthUser     string                 `json:"basicAuthUser"`
 	BasicAuthUser     string                 `json:"basicAuthUser"`
 	BasicAuthPassword string                 `json:"basicAuthPassword"`
 	BasicAuthPassword string                 `json:"basicAuthPassword"`
+	WithCredentials   bool                   `json:"withCredentials"`
 	IsDefault         bool                   `json:"isDefault"`
 	IsDefault         bool                   `json:"isDefault"`
 	JsonData          map[string]interface{} `json:"jsonData"`
 	JsonData          map[string]interface{} `json:"jsonData"`
 }
 }

+ 3 - 0
pkg/api/frontendsettings.go

@@ -62,6 +62,9 @@ func getFrontendSettingsMap(c *middleware.Context) (map[string]interface{}, erro
 			if ds.BasicAuth {
 			if ds.BasicAuth {
 				dsMap["basicAuth"] = util.GetBasicAuthHeader(ds.BasicAuthUser, ds.BasicAuthPassword)
 				dsMap["basicAuth"] = util.GetBasicAuthHeader(ds.BasicAuthUser, ds.BasicAuthPassword)
 			}
 			}
+			if ds.WithCredentials {
+				dsMap["withCredentials"] = ds.WithCredentials
+			}
 
 
 			if ds.Type == m.DS_INFLUXDB_08 {
 			if ds.Type == m.DS_INFLUXDB_08 {
 				dsMap["username"] = ds.User
 				dsMap["username"] = ds.User

+ 3 - 0
pkg/models/datasource.go

@@ -40,6 +40,7 @@ type DataSource struct {
 	BasicAuth         bool
 	BasicAuth         bool
 	BasicAuthUser     string
 	BasicAuthUser     string
 	BasicAuthPassword string
 	BasicAuthPassword string
+	WithCredentials   bool
 	IsDefault         bool
 	IsDefault         bool
 	JsonData          map[string]interface{}
 	JsonData          map[string]interface{}
 
 
@@ -83,6 +84,7 @@ type AddDataSourceCommand struct {
 	BasicAuth         bool                   `json:"basicAuth"`
 	BasicAuth         bool                   `json:"basicAuth"`
 	BasicAuthUser     string                 `json:"basicAuthUser"`
 	BasicAuthUser     string                 `json:"basicAuthUser"`
 	BasicAuthPassword string                 `json:"basicAuthPassword"`
 	BasicAuthPassword string                 `json:"basicAuthPassword"`
+	WithCredentials   bool                   `json:"withCredentials"`
 	IsDefault         bool                   `json:"isDefault"`
 	IsDefault         bool                   `json:"isDefault"`
 	JsonData          map[string]interface{} `json:"jsonData"`
 	JsonData          map[string]interface{} `json:"jsonData"`
 
 
@@ -103,6 +105,7 @@ type UpdateDataSourceCommand struct {
 	BasicAuth         bool                   `json:"basicAuth"`
 	BasicAuth         bool                   `json:"basicAuth"`
 	BasicAuthUser     string                 `json:"basicAuthUser"`
 	BasicAuthUser     string                 `json:"basicAuthUser"`
 	BasicAuthPassword string                 `json:"basicAuthPassword"`
 	BasicAuthPassword string                 `json:"basicAuthPassword"`
+	WithCredentials   bool                   `json:"withCredentials"`
 	IsDefault         bool                   `json:"isDefault"`
 	IsDefault         bool                   `json:"isDefault"`
 	JsonData          map[string]interface{} `json:"jsonData"`
 	JsonData          map[string]interface{} `json:"jsonData"`
 
 

+ 2 - 0
pkg/services/sqlstore/datasource.go

@@ -114,12 +114,14 @@ func UpdateDataSource(cmd *m.UpdateDataSourceCommand) error {
 			BasicAuth:         cmd.BasicAuth,
 			BasicAuth:         cmd.BasicAuth,
 			BasicAuthUser:     cmd.BasicAuthUser,
 			BasicAuthUser:     cmd.BasicAuthUser,
 			BasicAuthPassword: cmd.BasicAuthPassword,
 			BasicAuthPassword: cmd.BasicAuthPassword,
+			WithCredentials:   cmd.WithCredentials,
 			JsonData:          cmd.JsonData,
 			JsonData:          cmd.JsonData,
 			Updated:           time.Now(),
 			Updated:           time.Now(),
 		}
 		}
 
 
 		sess.UseBool("is_default")
 		sess.UseBool("is_default")
 		sess.UseBool("basic_auth")
 		sess.UseBool("basic_auth")
+		sess.UseBool("with_credentials")
 
 
 		_, err := sess.Where("id=? and org_id=?", ds.Id, ds.OrgId).Update(ds)
 		_, err := sess.Where("id=? and org_id=?", ds.Id, ds.OrgId).Update(ds)
 		if err != nil {
 		if err != nil {

+ 5 - 0
pkg/services/sqlstore/migrations/datasource_mig.go

@@ -96,4 +96,9 @@ func addDataSourceMigration(mg *Migrator) {
 	}))
 	}))
 
 
 	mg.AddMigration("Drop old table data_source_v1 #2", NewDropTableMigration("data_source_v1"))
 	mg.AddMigration("Drop old table data_source_v1 #2", NewDropTableMigration("data_source_v1"))
+
+	// add column to activate withCredentials option
+	mg.AddMigration("Add column with_credentials", NewAddColumnMigration(tableV2, &Column{
+		Name: "with_credentials", Type: DB_Bool, Nullable: false, Default: "0",
+	}))
 }
 }

+ 4 - 0
pkg/services/sqlstore/migrator/migrations.go

@@ -64,6 +64,10 @@ type AddColumnMigration struct {
 	column    *Column
 	column    *Column
 }
 }
 
 
+func NewAddColumnMigration(table Table, col *Column) *AddColumnMigration {
+	return &AddColumnMigration{tableName: table.Name, column: col}
+}
+
 func (m *AddColumnMigration) Table(tableName string) *AddColumnMigration {
 func (m *AddColumnMigration) Table(tableName string) *AddColumnMigration {
 	m.tableName = tableName
 	m.tableName = tableName
 	return m
 	return m

+ 12 - 3
public/app/features/org/partials/datasourceHttpConfig.html

@@ -17,7 +17,7 @@
 	</ul>
 	</ul>
 	<div class="clearfix"></div>
 	<div class="clearfix"></div>
 </div>
 </div>
-<div class="tight-form last">
+<div ng-if="!current.withCredentials" class="tight-form last">
 	<ul class="tight-form-list">
 	<ul class="tight-form-list">
 		<li class="tight-form-item" style="width: 80px">
 		<li class="tight-form-item" style="width: 80px">
 			Basic Auth
 			Basic Auth
@@ -40,5 +40,14 @@
 	</ul>
 	</ul>
 	<div class="clearfix"></div>
 	<div class="clearfix"></div>
 </div>
 </div>
-
-
+<div ng-if="!current.basicAuth" class="tight-form last">
+	<ul class="tight-form-list">
+		<li class="tight-form-item" style="width: 80px">
+			With Creds
+		</li>
+		<li class="tight-form-item">
+			<editor-checkbox text="Enable" model="current.withCredentials"></editor-checkbox>
+		</li>
+	</ul>
+	<div class="clearfix"></div>
+</div>

+ 4 - 1
public/app/plugins/datasource/elasticsearch/datasource.js

@@ -19,6 +19,7 @@ function (angular, _, moment, kbn, ElasticQueryBuilder, IndexPattern, ElasticRes
     function ElasticDatasource(datasource) {
     function ElasticDatasource(datasource) {
       this.type = 'elasticsearch';
       this.type = 'elasticsearch';
       this.basicAuth = datasource.basicAuth;
       this.basicAuth = datasource.basicAuth;
+      this.withCredentials = datasource.withCredentials;
       this.url = datasource.url;
       this.url = datasource.url;
       this.name = datasource.name;
       this.name = datasource.name;
       this.index = datasource.index;
       this.index = datasource.index;
@@ -38,8 +39,10 @@ function (angular, _, moment, kbn, ElasticQueryBuilder, IndexPattern, ElasticRes
         data: data
         data: data
       };
       };
 
 
-      if (this.basicAuth) {
+      if (this.basicAuth || this.withCredentials) {
         options.withCredentials = true;
         options.withCredentials = true;
+      }
+      if (this.basicAuth) {
         options.headers = {
         options.headers = {
           "Authorization": this.basicAuth
           "Authorization": this.basicAuth
         };
         };

+ 4 - 1
public/app/plugins/datasource/prometheus/datasource.js

@@ -23,6 +23,7 @@ function (angular, _, moment, dateMath) {
       this.url = datasource.url;
       this.url = datasource.url;
       this.directUrl = datasource.directUrl;
       this.directUrl = datasource.directUrl;
       this.basicAuth = datasource.basicAuth;
       this.basicAuth = datasource.basicAuth;
+      this.withCredentials = datasource.withCredentials;
       this.lastErrors = {};
       this.lastErrors = {};
     }
     }
 
 
@@ -32,8 +33,10 @@ function (angular, _, moment, dateMath) {
         method: method
         method: method
       };
       };
 
 
-      if (this.basicAuth) {
+      if (this.basicAuth || this.withCredentials) {
         options.withCredentials = true;
         options.withCredentials = true;
+      }
+      if (this.basicAuth) {
         options.headers = {
         options.headers = {
           "Authorization": this.basicAuth
           "Authorization": this.basicAuth
         };
         };