fetch user using the userservice with the userid

This commit is contained in:
Eric Leijonmarck 2024-10-22 15:39:18 +01:00
parent 35b8a6d5a7
commit 23cba78752
3 changed files with 13 additions and 6 deletions

View File

@ -0,0 +1 @@
/Users/eleijonmarck/dev/grafana/grafana-enterprise/src/pkg/build/cmd/exportversion.go

View File

@ -5,7 +5,6 @@ import (
"errors" "errors"
"time" "time"
"github.com/grafana/grafana/pkg/apimachinery/identity"
"github.com/grafana/grafana/pkg/components/simplejson" "github.com/grafana/grafana/pkg/components/simplejson"
"github.com/grafana/grafana/pkg/services/quota" "github.com/grafana/grafana/pkg/services/quota"
"github.com/grafana/grafana/pkg/services/user" "github.com/grafana/grafana/pkg/services/user"
@ -177,9 +176,6 @@ type AddDataSourceCommand struct {
ReadOnly bool `json:"-"` ReadOnly bool `json:"-"`
EncryptedSecureJsonData map[string][]byte `json:"-"` EncryptedSecureJsonData map[string][]byte `json:"-"`
UpdateSecretFn UpdateSecretFn `json:"-"` UpdateSecretFn UpdateSecretFn `json:"-"`
// Refactor to use User field instead of UserRequester
UserRequester identity.Requester
} }
// Also acts as api DTO // Also acts as api DTO

View File

@ -31,6 +31,7 @@ import (
"github.com/grafana/grafana/pkg/services/quota" "github.com/grafana/grafana/pkg/services/quota"
"github.com/grafana/grafana/pkg/services/secrets" "github.com/grafana/grafana/pkg/services/secrets"
"github.com/grafana/grafana/pkg/services/secrets/kvstore" "github.com/grafana/grafana/pkg/services/secrets/kvstore"
"github.com/grafana/grafana/pkg/services/user"
"github.com/grafana/grafana/pkg/setting" "github.com/grafana/grafana/pkg/setting"
) )
@ -52,6 +53,7 @@ type Service struct {
pluginStore pluginstore.Store pluginStore pluginstore.Store
pluginClient plugins.Client pluginClient plugins.Client
basePluginContextProvider plugincontext.BasePluginContextProvider basePluginContextProvider plugincontext.BasePluginContextProvider
userService user.Service
ptc proxyTransportCache ptc proxyTransportCache
} }
@ -71,6 +73,7 @@ func ProvideService(
features featuremgmt.FeatureToggles, ac accesscontrol.AccessControl, datasourcePermissionsService accesscontrol.DatasourcePermissionsService, features featuremgmt.FeatureToggles, ac accesscontrol.AccessControl, datasourcePermissionsService accesscontrol.DatasourcePermissionsService,
quotaService quota.Service, pluginStore pluginstore.Store, pluginClient plugins.Client, quotaService quota.Service, pluginStore pluginstore.Store, pluginClient plugins.Client,
basePluginContextProvider plugincontext.BasePluginContextProvider, basePluginContextProvider plugincontext.BasePluginContextProvider,
userService user.Service,
) (*Service, error) { ) (*Service, error) {
dslogger := log.New("datasources") dslogger := log.New("datasources")
store := &SqlStore{db: db, logger: dslogger, features: features} store := &SqlStore{db: db, logger: dslogger, features: features}
@ -90,6 +93,7 @@ func ProvideService(
pluginStore: pluginStore, pluginStore: pluginStore,
pluginClient: pluginClient, pluginClient: pluginClient,
basePluginContextProvider: basePluginContextProvider, basePluginContextProvider: basePluginContextProvider,
userService: userService,
} }
ac.RegisterScopeAttributeResolver(NewNameScopeResolver(store)) ac.RegisterScopeAttributeResolver(NewNameScopeResolver(store))
@ -291,8 +295,14 @@ func (s *Service) AddDataSource(ctx context.Context, cmd *datasources.AddDataSou
{BuiltinRole: "Viewer", Permission: "Query"}, {BuiltinRole: "Viewer", Permission: "Query"},
{BuiltinRole: "Editor", Permission: "Query"}, {BuiltinRole: "Editor", Permission: "Query"},
} }
if cmd.UserID != 0 || (cmd.UserRequester.IsIdentityType(claims.TypeUser, claims.TypeServiceAccount)) { if cmd.UserID != 0 {
permissions = append(permissions, accesscontrol.SetResourcePermissionCommand{UserID: cmd.UserID, Permission: "Admin"}) usr, err := s.userService.GetSignedInUser(ctx, &user.GetSignedInUserQuery{UserID: cmd.UserID, OrgID: cmd.OrgID})
if err != nil {
return fmt.Errorf("failed to get user: %w", err)
}
if usr.IsIdentityType(claims.TypeUser, claims.TypeServiceAccount) {
permissions = append(permissions, accesscontrol.SetResourcePermissionCommand{UserID: cmd.UserID, Permission: "Admin"})
}
} }
if _, err = s.permissionsService.SetPermissions(ctx, cmd.OrgID, dataSource.UID, permissions...); err != nil { if _, err = s.permissionsService.SetPermissions(ctx, cmd.OrgID, dataSource.UID, permissions...); err != nil {
return err return err