mirror of
https://github.com/grafana/grafana.git
synced 2025-07-30 06:02:25 +08:00
Access control: Add a scope to Data Sources GET endpoint (#38933)
This commit is contained in:
@ -266,7 +266,7 @@ func (hs *HTTPServer) registerRoutes() {
|
|||||||
|
|
||||||
// Data sources
|
// Data sources
|
||||||
apiRoute.Group("/datasources", func(datasourceRoute routing.RouteRegister) {
|
apiRoute.Group("/datasources", func(datasourceRoute routing.RouteRegister) {
|
||||||
datasourceRoute.Get("/", authorize(reqOrgAdmin, ac.EvalPermission(ActionDatasourcesRead)), routing.Wrap(hs.GetDataSources))
|
datasourceRoute.Get("/", authorize(reqOrgAdmin, ac.EvalPermission(ActionDatasourcesRead, ScopeDatasourcesAll)), routing.Wrap(hs.GetDataSources))
|
||||||
datasourceRoute.Post("/", authorize(reqOrgAdmin, ac.EvalPermission(ActionDatasourcesCreate)), quota("data_source"), bind(models.AddDataSourceCommand{}), routing.Wrap(AddDataSource))
|
datasourceRoute.Post("/", authorize(reqOrgAdmin, ac.EvalPermission(ActionDatasourcesCreate)), quota("data_source"), bind(models.AddDataSourceCommand{}), routing.Wrap(AddDataSource))
|
||||||
datasourceRoute.Put("/:id", authorize(reqOrgAdmin, ac.EvalPermission(ActionDatasourcesWrite, ScopeDatasourceID)), bind(models.UpdateDataSourceCommand{}), routing.Wrap(hs.UpdateDataSource))
|
datasourceRoute.Put("/:id", authorize(reqOrgAdmin, ac.EvalPermission(ActionDatasourcesWrite, ScopeDatasourceID)), bind(models.UpdateDataSourceCommand{}), routing.Wrap(hs.UpdateDataSource))
|
||||||
datasourceRoute.Delete("/:id", authorize(reqOrgAdmin, ac.EvalPermission(ActionDatasourcesDelete, ScopeDatasourceID)), routing.Wrap(hs.DeleteDataSourceById))
|
datasourceRoute.Delete("/:id", authorize(reqOrgAdmin, ac.EvalPermission(ActionDatasourcesDelete, ScopeDatasourceID)), routing.Wrap(hs.DeleteDataSourceById))
|
||||||
|
@ -234,7 +234,7 @@ func TestAPI_Datasources_AccessControl(t *testing.T) {
|
|||||||
desc: "DatasourcesGet should return 200 for user with correct permissions",
|
desc: "DatasourcesGet should return 200 for user with correct permissions",
|
||||||
url: "/api/datasources/",
|
url: "/api/datasources/",
|
||||||
method: http.MethodGet,
|
method: http.MethodGet,
|
||||||
permissions: []*accesscontrol.Permission{{Action: ActionDatasourcesRead}},
|
permissions: []*accesscontrol.Permission{{Action: ActionDatasourcesRead, Scope: ScopeDatasourcesAll}},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
@ -42,8 +42,6 @@ type Mock struct {
|
|||||||
RegisterFixedRolesFunc func() error
|
RegisterFixedRolesFunc func() error
|
||||||
}
|
}
|
||||||
|
|
||||||
type MockOptions func(*Mock)
|
|
||||||
|
|
||||||
// Ensure the mock stays in line with the interface
|
// Ensure the mock stays in line with the interface
|
||||||
var _ fullAccessControl = New()
|
var _ fullAccessControl = New()
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user