|
|
@@ -1,6 +1,7 @@
|
|
|
package sqlstore
|
|
|
|
|
|
import (
|
|
|
+ "fmt"
|
|
|
"strings"
|
|
|
"time"
|
|
|
|
|
|
@@ -21,7 +22,6 @@ func init() {
|
|
|
bus.AddHandler("sql", GetDashboardSlugById)
|
|
|
bus.AddHandler("sql", GetDashboardUIDById)
|
|
|
bus.AddHandler("sql", GetDashboardsByPluginId)
|
|
|
- bus.AddHandler("sql", GetFoldersForSignedInUser)
|
|
|
bus.AddHandler("sql", GetDashboardPermissionsForUser)
|
|
|
bus.AddHandler("sql", GetDashboardsBySlug)
|
|
|
}
|
|
|
@@ -256,7 +256,7 @@ func findDashboards(query *search.FindPersistedDashboardsQuery) ([]DashboardSear
|
|
|
limit = 1000
|
|
|
}
|
|
|
|
|
|
- sb := NewSearchBuilder(query.SignedInUser, limit).
|
|
|
+ sb := NewSearchBuilder(query.SignedInUser, limit, query.Permission).
|
|
|
WithTags(query.Tags).
|
|
|
WithDashboardIdsIn(query.DashboardIds)
|
|
|
|
|
|
@@ -279,6 +279,7 @@ func findDashboards(query *search.FindPersistedDashboardsQuery) ([]DashboardSear
|
|
|
var res []DashboardSearchProjection
|
|
|
|
|
|
sql, params := sb.ToSql()
|
|
|
+ fmt.Printf("%s, %v", sql, params)
|
|
|
sqlog.Info("sql", "sql", sql, "params", params)
|
|
|
err := x.Sql(sql, params...).Find(&res)
|
|
|
if err != nil {
|
|
|
@@ -358,54 +359,6 @@ func GetDashboardTags(query *m.GetDashboardTagsQuery) error {
|
|
|
return err
|
|
|
}
|
|
|
|
|
|
-func GetFoldersForSignedInUser(query *m.GetFoldersForSignedInUserQuery) error {
|
|
|
- query.Result = make([]*m.DashboardFolder, 0)
|
|
|
- var err error
|
|
|
-
|
|
|
- if query.SignedInUser.OrgRole == m.ROLE_ADMIN {
|
|
|
- sql := `SELECT distinct d.id, d.title
|
|
|
- FROM dashboard AS d WHERE d.is_folder = ? AND d.org_id = ?
|
|
|
- ORDER BY d.title ASC`
|
|
|
-
|
|
|
- err = x.Sql(sql, dialect.BooleanStr(true), query.OrgId).Find(&query.Result)
|
|
|
- } else {
|
|
|
- params := make([]interface{}, 0)
|
|
|
- sql := `SELECT distinct d.id, d.title
|
|
|
- FROM dashboard AS d
|
|
|
- LEFT JOIN dashboard_acl AS da ON d.id = da.dashboard_id
|
|
|
- LEFT JOIN team_member AS ugm ON ugm.team_id = da.team_id
|
|
|
- LEFT JOIN org_user ou ON ou.role = da.role AND ou.user_id = ?
|
|
|
- LEFT JOIN org_user ouRole ON ouRole.role = 'Editor' AND ouRole.user_id = ? AND ouRole.org_id = ?`
|
|
|
- params = append(params, query.SignedInUser.UserId)
|
|
|
- params = append(params, query.SignedInUser.UserId)
|
|
|
- params = append(params, query.OrgId)
|
|
|
-
|
|
|
- sql += ` WHERE
|
|
|
- d.org_id = ? AND
|
|
|
- d.is_folder = ? AND
|
|
|
- (
|
|
|
- (d.has_acl = ? AND da.permission > 1 AND (da.user_id = ? OR ugm.user_id = ? OR ou.id IS NOT NULL))
|
|
|
- OR (d.has_acl = ? AND ouRole.id IS NOT NULL)
|
|
|
- )`
|
|
|
- params = append(params, query.OrgId)
|
|
|
- params = append(params, dialect.BooleanStr(true))
|
|
|
- params = append(params, dialect.BooleanStr(true))
|
|
|
- params = append(params, query.SignedInUser.UserId)
|
|
|
- params = append(params, query.SignedInUser.UserId)
|
|
|
- params = append(params, dialect.BooleanStr(false))
|
|
|
-
|
|
|
- if len(query.Title) > 0 {
|
|
|
- sql += " AND d.title " + dialect.LikeStr() + " ?"
|
|
|
- params = append(params, "%"+query.Title+"%")
|
|
|
- }
|
|
|
-
|
|
|
- sql += ` ORDER BY d.title ASC`
|
|
|
- err = x.Sql(sql, params...).Find(&query.Result)
|
|
|
- }
|
|
|
-
|
|
|
- return err
|
|
|
-}
|
|
|
-
|
|
|
func DeleteDashboard(cmd *m.DeleteDashboardCommand) error {
|
|
|
return inTransaction(func(sess *DBSession) error {
|
|
|
dashboard := m.Dashboard{Id: cmd.Id, OrgId: cmd.OrgId}
|