Files
grafana/pkg/services/authz/rbac/store/queries.go
Karl Persson 1b1954de28 Authz: add support to use folder api to fetch folder tree (#100038)
* Add FolderStore interface

* Authz: add implementation to use folders api and use it inproc with loopback config

* Add tracing and add rest.Config for talking with folder api using access tokens

* Restructure test to get rid of circular dependencies in tests

* use correct group version kind

---------

Co-authored-by: gamab <gabriel.mabille@grafana.com>
2025-02-13 11:59:59 +01:00

86 lines
1.9 KiB
Go

package store
import (
"embed"
"fmt"
"text/template"
"github.com/grafana/grafana/pkg/storage/legacysql"
"github.com/grafana/grafana/pkg/storage/unified/sql/sqltemplate"
)
var (
//go:embed *.sql
sqlTemplatesFS embed.FS
sqlTemplates = template.Must(template.New("sql").ParseFS(sqlTemplatesFS, `*.sql`))
sqlQueryBasicRoles = mustTemplate("basic_role_query.sql")
sqlUserIdentifiers = mustTemplate("user_identifier_query.sql")
)
func mustTemplate(filename string) *template.Template {
if t := sqlTemplates.Lookup(filename); t != nil {
return t
}
panic(fmt.Sprintf("template file not found: %s", filename))
}
type getUserIdentifiers struct {
sqltemplate.SQLTemplate
Query *UserIdentifierQuery
UserTable string
}
func (r getUserIdentifiers) Validate() error {
return nil
}
func newGetUserIdentifiers(sql *legacysql.LegacyDatabaseHelper, q *UserIdentifierQuery) getUserIdentifiers {
return getUserIdentifiers{
SQLTemplate: sqltemplate.New(sql.DialectForDriver()),
Query: q,
UserTable: sql.Table("user"),
}
}
type getBasicRolesQuery struct {
sqltemplate.SQLTemplate
Query *BasicRoleQuery
UserTable string
OrgUserTable string
}
func (r getBasicRolesQuery) Validate() error {
return nil
}
func newGetBasicRoles(sql *legacysql.LegacyDatabaseHelper, q *BasicRoleQuery) getBasicRolesQuery {
return getBasicRolesQuery{
SQLTemplate: sqltemplate.New(sql.DialectForDriver()),
Query: q,
UserTable: sql.Table("user"),
OrgUserTable: sql.Table("org_user"),
}
}
type getFoldersQuery struct {
sqltemplate.SQLTemplate
Query *FolderQuery
FolderTable string
}
func (r getFoldersQuery) Validate() error {
return nil
}
func newGetFolders(sql *legacysql.LegacyDatabaseHelper, q *FolderQuery) getFoldersQuery {
return getFoldersQuery{
SQLTemplate: sqltemplate.New(sql.DialectForDriver()),
Query: q,
FolderTable: sql.Table("folder"),
}
}