Chore: Add orguser methods to org service interface (#55668)

* Move role types to a separate package

* Make role type singular and remove _ from directory name

* Add orguser methods to org service

* Fix fake method
This commit is contained in:
idafurjes 2022-09-23 13:19:34 +02:00 committed by GitHub
parent 7f98f4b411
commit fb66439c3e
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 119 additions and 8 deletions

View File

@ -6,6 +6,7 @@ import (
"time"
"github.com/grafana/grafana/pkg/models/roletype"
"github.com/grafana/grafana/pkg/services/user"
)
// Typed errors
@ -156,6 +157,33 @@ type RemoveOrgUserCommand struct {
UserWasDeleted bool
}
type GetOrgUsersQuery struct {
UserID int64
OrgID int64
Query string
Limit int
// Flag used to allow oss edition to query users without access control
DontEnforceAccessControl bool
User *user.SignedInUser
}
type SearchOrgUsersQuery struct {
OrgID int64
Query string
Page int
Limit int
User *user.SignedInUser
}
type SearchOrgUsersQueryResult struct {
TotalCount int64 `json:"totalCount"`
OrgUsers []*OrgUserDTO `json:"OrgUsers"`
Page int `json:"page"`
PerPage int `json:"perPage"`
}
type ByOrgName []*UserOrgDTO
// Len returns the length of an array of organisations.

View File

@ -21,4 +21,6 @@ type Service interface {
AddOrgUser(context.Context, *AddOrgUserCommand) error
UpdateOrgUser(context.Context, *UpdateOrgUserCommand) error
RemoveOrgUser(context.Context, *RemoveOrgUserCommand) error
GetOrgUsers(context.Context, *GetOrgUsersQuery) ([]*OrgUserDTO, error)
SearchOrgUsers(context.Context, *SearchOrgUsersQuery) (*SearchOrgUsersQueryResult, error)
}

View File

@ -244,3 +244,80 @@ func (s *Service) RemoveOrgUser(ctx context.Context, cmd *org.RemoveOrgUserComma
}
return s.sqlStore.RemoveOrgUser(ctx, c)
}
// TODO: remove wrapper around sqlstore
func (s *Service) GetOrgUsers(ctx context.Context, query *org.GetOrgUsersQuery) ([]*org.OrgUserDTO, error) {
q := &models.GetOrgUsersQuery{
UserID: query.UserID,
OrgId: query.OrgID,
Query: query.Query,
Limit: query.Limit,
DontEnforceAccessControl: query.DontEnforceAccessControl,
User: query.User,
}
err := s.sqlStore.GetOrgUsers(ctx, q)
if err != nil {
return nil, err
}
result := make([]*org.OrgUserDTO, 0)
for _, user := range q.Result {
result = append(result, &org.OrgUserDTO{
OrgID: user.OrgId,
UserID: user.UserId,
Login: user.Login,
Email: user.Email,
Name: user.Name,
AvatarURL: user.AvatarUrl,
Role: user.Role,
LastSeenAt: user.LastSeenAt,
LastSeenAtAge: user.LastSeenAtAge,
Updated: user.Updated,
Created: user.Created,
AccessControl: user.AccessControl,
IsDisabled: user.IsDisabled,
})
}
return result, nil
}
// TODO: remove wrapper around sqlstore
func (s *Service) SearchOrgUsers(ctx context.Context, query *org.SearchOrgUsersQuery) (*org.SearchOrgUsersQueryResult, error) {
q := &models.SearchOrgUsersQuery{
OrgID: query.OrgID,
Query: query.Query,
Page: query.Page,
Limit: query.Limit,
User: query.User,
}
err := s.sqlStore.SearchOrgUsers(ctx, q)
if err != nil {
return nil, err
}
result := &org.SearchOrgUsersQueryResult{
TotalCount: q.Result.TotalCount,
OrgUsers: make([]*org.OrgUserDTO, 0),
Page: q.Result.Page,
PerPage: q.Result.PerPage,
}
for _, user := range q.Result.OrgUsers {
result.OrgUsers = append(result.OrgUsers, &org.OrgUserDTO{
OrgID: user.OrgId,
UserID: user.UserId,
Login: user.Login,
Email: user.Email,
Name: user.Name,
AvatarURL: user.AvatarUrl,
Role: user.Role,
LastSeenAt: user.LastSeenAt,
LastSeenAtAge: user.LastSeenAtAge,
Updated: user.Updated,
Created: user.Created,
AccessControl: user.AccessControl,
IsDisabled: user.IsDisabled,
})
}
return result, nil
}

View File

@ -3,17 +3,17 @@ package orgtest
import (
"context"
"github.com/grafana/grafana/pkg/models"
"github.com/grafana/grafana/pkg/services/org"
)
type FakeOrgService struct {
ExpectedOrgUserID int64
ExpectedError error
ExpectedUserOrgDTO []*org.UserOrgDTO
ExpectedOrgs []*org.OrgDTO
ExpectedOrg *org.Org
ExpectedOrgUsers []*org.OrgUserDTO
ExpectedOrgUserID int64
ExpectedError error
ExpectedUserOrgDTO []*org.UserOrgDTO
ExpectedOrgs []*org.OrgDTO
ExpectedOrg *org.Org
ExpectedOrgUsers []*org.OrgUserDTO
ExpectedSearchOrgUsersResult *org.SearchOrgUsersQueryResult
}
func NewOrgServiceFake() *FakeOrgService {
@ -84,10 +84,14 @@ func (f *FakeOrgService) UpdateOrgUser(ctx context.Context, cmd *org.UpdateOrgUs
return f.ExpectedError
}
func (f *FakeOrgService) GetOrgUsers(ctx context.Context, query *models.GetOrgUsersQuery) ([]*org.OrgUserDTO, error) {
func (f *FakeOrgService) GetOrgUsers(ctx context.Context, query *org.GetOrgUsersQuery) ([]*org.OrgUserDTO, error) {
return f.ExpectedOrgUsers, f.ExpectedError
}
func (f *FakeOrgService) RemoveOrgUser(ctx context.Context, cmd *org.RemoveOrgUserCommand) error {
return f.ExpectedError
}
func (f *FakeOrgService) SearchOrgUsers(ctx context.Context, query *org.SearchOrgUsersQuery) (*org.SearchOrgUsersQueryResult, error) {
return f.ExpectedSearchOrgUsersResult, f.ExpectedError
}