Chore: Add NewAnonymousSignedInUser to user service (#57537)
This commit is contained in:
@@ -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 {
|
||||
|
||||
Reference in New Issue
Block a user