From a82b25eb79cd538ac847cd44e798e853ca45d168 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Torkel=20=C3=96degaard?= Date: Thu, 22 Jun 2017 15:16:41 -0400 Subject: [PATCH] acl: more acl work --- pkg/services/sqlstore/dashboard_acl.go | 12 +++- public/app/features/dashboard/acl/acl.html | 9 ++- public/app/features/dashboard/acl/acl.ts | 82 +++++++++++++++------- public/sass/base/_type.scss | 4 ++ public/sass/components/_gf-form.scss | 17 +++-- public/sass/components/_query_editor.scss | 6 ++ 6 files changed, 89 insertions(+), 41 deletions(-) diff --git a/pkg/services/sqlstore/dashboard_acl.go b/pkg/services/sqlstore/dashboard_acl.go index 0c1e448da90..9912511c432 100644 --- a/pkg/services/sqlstore/dashboard_acl.go +++ b/pkg/services/sqlstore/dashboard_acl.go @@ -1,6 +1,7 @@ package sqlstore import ( + "fmt" "time" "github.com/grafana/grafana/pkg/bus" @@ -148,6 +149,12 @@ func GetInheritedDashboardAcl(query *m.GetInheritedDashboardAclQuery) error { } func GetDashboardAclInfoList(query *m.GetDashboardAclInfoListQuery) error { + dashboardFilter := fmt.Sprintf(`IN ( + SELECT id FROM dashboard where id = %d + UNION + SELECT parent_id from dashboard where id = %d + )`, query.DashboardId, query.DashboardId) + rawSQL := ` SELECT da.id, @@ -165,7 +172,7 @@ func GetDashboardAclInfoList(query *m.GetDashboardAclInfoListQuery) error { FROM` + dialect.Quote("dashboard_acl") + ` as da LEFT OUTER JOIN ` + dialect.Quote("user") + ` AS u ON u.id = da.user_id LEFT OUTER JOIN user_group ug on ug.id = da.user_group_id - WHERE dashboard_id = ? + WHERE dashboard_id ` + dashboardFilter + ` -- Also include default permission if has_acl = 0 @@ -188,8 +195,7 @@ func GetDashboardAclInfoList(query *m.GetDashboardAclInfoListQuery) error { ` query.Result = make([]*m.DashboardAclInfoDTO, 0) - - err := x.SQL(rawSQL, query.DashboardId, query.DashboardId).Find(&query.Result) + err := x.SQL(rawSQL, query.DashboardId).Find(&query.Result) for _, p := range query.Result { p.PermissionName = p.Permission.String() diff --git a/public/app/features/dashboard/acl/acl.html b/public/app/features/dashboard/acl/acl.html index 646ccee9a19..96ce10176c3 100644 --- a/public/app/features/dashboard/acl/acl.html +++ b/public/app/features/dashboard/acl/acl.html @@ -12,19 +12,22 @@