mirror of
https://github.com/grafana/grafana.git
synced 2025-02-25 18:55:37 -06:00
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:
parent
7f98f4b411
commit
fb66439c3e
@ -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.
|
||||
|
@ -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)
|
||||
}
|
||||
|
@ -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
|
||||
}
|
||||
|
@ -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
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user