mirror of
https://github.com/grafana/grafana.git
synced 2024-11-22 08:56:43 -06:00
Chore: Add NewAnonymousSignedInUser to user service (#57537)
This commit is contained in:
parent
8fe02612b6
commit
d45fe6e25c
@ -16,6 +16,7 @@ type Service interface {
|
||||
SetUsingOrg(context.Context, *SetUsingOrgCommand) error
|
||||
GetSignedInUserWithCacheCtx(context.Context, *GetSignedInUserQuery) (*SignedInUser, error)
|
||||
GetSignedInUser(context.Context, *GetSignedInUserQuery) (*SignedInUser, error)
|
||||
NewAnonymousSignedInUser(context.Context) (*SignedInUser, error)
|
||||
Search(context.Context, *SearchUsersQuery) (*SearchUserQueryResult, error)
|
||||
Disable(context.Context, *DisableUserCommand) error
|
||||
BatchDisableUsers(context.Context, *BatchDisableUsersCommand) error
|
||||
|
@ -9,6 +9,7 @@ import (
|
||||
"github.com/grafana/grafana/pkg/infra/db"
|
||||
"github.com/grafana/grafana/pkg/infra/localcache"
|
||||
"github.com/grafana/grafana/pkg/models"
|
||||
"github.com/grafana/grafana/pkg/models/roletype"
|
||||
ac "github.com/grafana/grafana/pkg/services/accesscontrol"
|
||||
"github.com/grafana/grafana/pkg/services/org"
|
||||
"github.com/grafana/grafana/pkg/services/team"
|
||||
@ -254,6 +255,31 @@ func (s *Service) GetSignedInUser(ctx context.Context, query *user.GetSignedInUs
|
||||
return signedInUser, err
|
||||
}
|
||||
|
||||
func (s *Service) NewAnonymousSignedInUser(ctx context.Context) (*user.SignedInUser, error) {
|
||||
if !s.cfg.AnonymousEnabled {
|
||||
return nil, fmt.Errorf("anonymous access is disabled")
|
||||
}
|
||||
|
||||
usr := &user.SignedInUser{
|
||||
IsAnonymous: true,
|
||||
OrgRole: roletype.RoleType(s.cfg.AnonymousOrgRole),
|
||||
}
|
||||
|
||||
if s.cfg.AnonymousOrgName == "" {
|
||||
return usr, nil
|
||||
}
|
||||
|
||||
getOrg := org.GetOrgByNameQuery{Name: s.cfg.AnonymousOrgName}
|
||||
anonymousOrg, err := s.orgService.GetByName(ctx, &getOrg)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
usr.OrgID = anonymousOrg.ID
|
||||
usr.OrgName = anonymousOrg.Name
|
||||
return usr, nil
|
||||
}
|
||||
|
||||
func (s *Service) Search(ctx context.Context, query *user.SearchUsersQuery) (*user.SearchUserQueryResult, error) {
|
||||
return s.store.Search(ctx, query)
|
||||
}
|
||||
|
@ -6,6 +6,7 @@ import (
|
||||
"testing"
|
||||
|
||||
"github.com/grafana/grafana/pkg/infra/localcache"
|
||||
"github.com/grafana/grafana/pkg/models/roletype"
|
||||
"github.com/grafana/grafana/pkg/services/org"
|
||||
"github.com/grafana/grafana/pkg/services/org/orgtest"
|
||||
"github.com/grafana/grafana/pkg/services/team/teamtest"
|
||||
@ -126,6 +127,41 @@ func TestUserService(t *testing.T) {
|
||||
require.NotNil(t, result2)
|
||||
assert.Equal(t, query2.OrgID, result2.OrgID)
|
||||
})
|
||||
|
||||
t.Run("NewAnonymousSignedInUser", func(t *testing.T) {
|
||||
t.Run("should error when anonymous access is disabled", func(t *testing.T) {
|
||||
userService.cfg = setting.NewCfg()
|
||||
userService.cfg.AnonymousEnabled = false
|
||||
_, err := userService.NewAnonymousSignedInUser(context.Background())
|
||||
require.Error(t, err)
|
||||
})
|
||||
|
||||
t.Run("should return user when anonymous access is enabled and org is not set", func(t *testing.T) {
|
||||
userService.cfg = setting.NewCfg()
|
||||
userService.cfg.AnonymousEnabled = true
|
||||
u, err := userService.NewAnonymousSignedInUser(context.Background())
|
||||
require.NoError(t, err)
|
||||
require.Equal(t, true, u.IsAnonymous)
|
||||
require.Equal(t, int64(0), u.UserID)
|
||||
require.Equal(t, "", u.OrgName)
|
||||
require.Equal(t, roletype.RoleType(""), u.OrgRole)
|
||||
})
|
||||
|
||||
t.Run("should return user with org info when anonymous access is enabled and org is set", func(t *testing.T) {
|
||||
userService.cfg = setting.NewCfg()
|
||||
userService.cfg.AnonymousEnabled = true
|
||||
userService.cfg.AnonymousOrgName = "anonymous"
|
||||
userService.cfg.AnonymousOrgRole = "anonymous"
|
||||
orgService.ExpectedOrg = &org.Org{Name: "anonymous", ID: 123}
|
||||
u, err := userService.NewAnonymousSignedInUser(context.Background())
|
||||
require.NoError(t, err)
|
||||
require.Equal(t, true, u.IsAnonymous)
|
||||
require.Equal(t, int64(0), u.UserID)
|
||||
require.Equal(t, orgService.ExpectedOrg.ID, u.OrgID)
|
||||
require.Equal(t, orgService.ExpectedOrg.Name, u.OrgName)
|
||||
require.Equal(t, roletype.RoleType(userService.cfg.AnonymousOrgRole), u.OrgRole)
|
||||
})
|
||||
})
|
||||
}
|
||||
|
||||
type FakeUserStore struct {
|
||||
|
@ -74,6 +74,10 @@ func (f *FakeUserService) GetSignedInUser(ctx context.Context, query *user.GetSi
|
||||
return f.ExpectedSignedInUser, f.ExpectedError
|
||||
}
|
||||
|
||||
func (f *FakeUserService) NewAnonymousSignedInUser(ctx context.Context) (*user.SignedInUser, error) {
|
||||
return f.ExpectedSignedInUser, f.ExpectedError
|
||||
}
|
||||
|
||||
func (f *FakeUserService) Search(ctx context.Context, query *user.SearchUsersQuery) (*user.SearchUserQueryResult, error) {
|
||||
return &f.ExpectedSearchUsers, f.ExpectedError
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user