mirror of
https://github.com/grafana/grafana.git
synced 2025-02-25 18:55:37 -06:00
RBAC: allow listing permissions on the root folder (#82184)
* allow returning AC metadata for the root folder * add a test * share the reserved root folder UID with frontend
This commit is contained in:
@@ -179,6 +179,10 @@ func (s *Service) Get(ctx context.Context, q *folder.GetFolderQuery) (*folder.Fo
|
||||
return nil, folder.ErrBadRequest.Errorf("missing signed in user")
|
||||
}
|
||||
|
||||
if q.UID != nil && *q.UID == accesscontrol.GeneralFolderUID {
|
||||
return folder.RootFolder, nil
|
||||
}
|
||||
|
||||
if s.features.IsEnabled(ctx, featuremgmt.FlagNestedFolders) && q.UID != nil && *q.UID == folder.SharedWithMeFolderUID {
|
||||
return folder.SharedWithMeFolder.WithURL(), nil
|
||||
}
|
||||
@@ -478,7 +482,7 @@ func (s *Service) deduplicateAvailableFolders(ctx context.Context, folders []*fo
|
||||
}
|
||||
|
||||
func (s *Service) GetParents(ctx context.Context, q folder.GetParentsQuery) ([]*folder.Folder, error) {
|
||||
if !s.features.IsEnabled(ctx, featuremgmt.FlagNestedFolders) {
|
||||
if !s.features.IsEnabled(ctx, featuremgmt.FlagNestedFolders) || q.UID == accesscontrol.GeneralFolderUID {
|
||||
return nil, nil
|
||||
}
|
||||
if q.UID == folder.SharedWithMeFolderUID {
|
||||
|
||||
@@ -299,6 +299,17 @@ func TestIntegrationFolderService(t *testing.T) {
|
||||
require.NoError(t, err)
|
||||
})
|
||||
|
||||
t.Run("When get folder by uid and uid is general should return the root folder object", func(t *testing.T) {
|
||||
uid := accesscontrol.GeneralFolderUID
|
||||
query := &folder.GetFolderQuery{
|
||||
UID: &uid,
|
||||
SignedInUser: usr,
|
||||
}
|
||||
actual, err := service.Get(context.Background(), query)
|
||||
require.Equal(t, folder.RootFolder, actual)
|
||||
require.NoError(t, err)
|
||||
})
|
||||
|
||||
t.Run("When get folder by title should return folder", func(t *testing.T) {
|
||||
expected := folder.NewFolder("TEST-"+util.GenerateShortUID(), "")
|
||||
|
||||
|
||||
@@ -53,7 +53,7 @@ type Folder struct {
|
||||
}
|
||||
|
||||
var GeneralFolder = Folder{ID: 0, Title: "General"}
|
||||
|
||||
var RootFolder = &Folder{ID: 0, Title: "Root", UID: GeneralFolderUID, ParentUID: ""}
|
||||
var SharedWithMeFolder = Folder{
|
||||
Title: "Shared with me",
|
||||
Description: "Dashboards and folders shared with me",
|
||||
|
||||
Reference in New Issue
Block a user