Chore: Add tempuser service (#53325)

* Chore: Add tempuser service

* Add implementation

* Fix linter; Inject tempUser into wire and HTTPServer

* Fix errors
This commit is contained in:
Kat Yang 2022-08-12 12:13:23 -04:00 committed by GitHub
parent 101c087fc7
commit 943cdea855
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
7 changed files with 96 additions and 4 deletions

View File

@ -80,6 +80,7 @@ import (
"github.com/grafana/grafana/pkg/services/star"
"github.com/grafana/grafana/pkg/services/store"
"github.com/grafana/grafana/pkg/services/teamguardian"
tempUser "github.com/grafana/grafana/pkg/services/temp_user"
"github.com/grafana/grafana/pkg/services/thumbs"
"github.com/grafana/grafana/pkg/services/updatechecker"
"github.com/grafana/grafana/pkg/services/user"
@ -176,6 +177,7 @@ type HTTPServer struct {
kvStore kvstore.KVStore
secretsMigrator secrets.Migrator
userService user.Service
tempUserService tempUser.Service
}
type ServerOptions struct {
@ -210,9 +212,8 @@ func ProvideHTTPServer(opts ServerOptions, cfg *setting.Cfg, routeRegister routi
teamsPermissionsService accesscontrol.TeamPermissionsService, folderPermissionsService accesscontrol.FolderPermissionsService,
dashboardPermissionsService accesscontrol.DashboardPermissionsService, dashboardVersionService dashver.Service,
starService star.Service, csrfService csrf.Service, coremodels *registry.Base,
playlistService playlist.Service, apiKeyService apikey.Service, kvStore kvstore.KVStore,
secretsMigrator secrets.Migrator, secretsPluginManager plugins.SecretsPluginManager,
publicDashboardsApi *publicdashboardsApi.Api, userService user.Service) (*HTTPServer, error) {
playlistService playlist.Service, apiKeyService apikey.Service, kvStore kvstore.KVStore, secretsMigrator secrets.Migrator, secretsPluginManager plugins.SecretsPluginManager,
publicDashboardsApi *publicdashboardsApi.Api, userService user.Service, tempUserService tempUser.Service) (*HTTPServer, error) {
web.Env = cfg.Env
m := web.New()
@ -300,6 +301,7 @@ func ProvideHTTPServer(opts ServerOptions, cfg *setting.Cfg, routeRegister routi
PublicDashboardsApi: publicDashboardsApi,
secretsMigrator: secretsMigrator,
userService: userService,
tempUserService: tempUserService,
}
if hs.Listener != nil {
hs.log.Debug("Using provided listener")

View File

@ -278,7 +278,7 @@ func (hs *HTTPServer) CompleteInvite(c *models.ReqContext) response.Response {
func (hs *HTTPServer) updateTempUserStatus(ctx context.Context, code string, status models.TempUserStatus) (bool, response.Response) {
// update temp user status
updateTmpUserCmd := models.UpdateTempUserStatusCommand{Code: code, Status: status}
if err := hs.SQLStore.UpdateTempUserStatus(ctx, &updateTmpUserCmd); err != nil {
if err := hs.tempUserService.UpdateTempUserStatus(ctx, &updateTmpUserCmd); err != nil {
return false, response.Error(500, "Failed to update invite status", err)
}

View File

@ -114,6 +114,7 @@ import (
"github.com/grafana/grafana/pkg/services/teamguardian"
teamguardianDatabase "github.com/grafana/grafana/pkg/services/teamguardian/database"
teamguardianManager "github.com/grafana/grafana/pkg/services/teamguardian/manager"
"github.com/grafana/grafana/pkg/services/temp_user/tempuserimpl"
"github.com/grafana/grafana/pkg/services/thumbs"
"github.com/grafana/grafana/pkg/services/updatechecker"
"github.com/grafana/grafana/pkg/services/user/userimpl"
@ -311,6 +312,7 @@ var wireBasicSet = wire.NewSet(
publicdashboardsApi.ProvideApi,
userimpl.ProvideService,
orgimpl.ProvideService,
tempuserimpl.ProvideService,
datasourceservice.ProvideDataSourceMigrationService,
secretsStore.ProvidePluginSecretMigrationService,
secretsMigrations.ProvideSecretMigrationService,

View File

@ -0,0 +1,16 @@
package tempuser
import (
"context"
"github.com/grafana/grafana/pkg/models"
)
type Service interface {
UpdateTempUserStatus(ctx context.Context, cmd *models.UpdateTempUserStatusCommand) error
CreateTempUser(ctx context.Context, cmd *models.CreateTempUserCommand) error
UpdateTempUserWithEmailSent(ctx context.Context, cmd *models.UpdateTempUserWithEmailSentCommand) error
GetTempUsersQuery(ctx context.Context, query *models.GetTempUsersQuery) error
GetTempUserByCode(ctx context.Context, query *models.GetTempUserByCodeQuery) error
ExpireOldUserInvites(ctx context.Context, cmd *models.ExpireTempUsersCommand) error
}

View File

@ -0,0 +1 @@
package tempuserimpl

View File

@ -0,0 +1 @@
package tempuserimpl

View File

@ -0,0 +1,70 @@
package tempuserimpl
import (
"context"
"github.com/grafana/grafana/pkg/models"
"github.com/grafana/grafana/pkg/services/sqlstore"
tempuser "github.com/grafana/grafana/pkg/services/temp_user"
)
type Service struct {
// TODO remove sqlstore
sqlStore *sqlstore.SQLStore
}
func ProvideService(
ss *sqlstore.SQLStore,
) tempuser.Service {
return &Service{
sqlStore: ss,
}
}
func (s *Service) UpdateTempUserStatus(ctx context.Context, cmd *models.UpdateTempUserStatusCommand) error {
err := s.sqlStore.UpdateTempUserStatus(ctx, cmd)
if err != nil {
return err
}
return nil
}
func (s *Service) CreateTempUser(ctx context.Context, cmd *models.CreateTempUserCommand) error {
err := s.sqlStore.CreateTempUser(ctx, cmd)
if err != nil {
return err
}
return nil
}
func (s *Service) UpdateTempUserWithEmailSent(ctx context.Context, cmd *models.UpdateTempUserWithEmailSentCommand) error {
err := s.sqlStore.UpdateTempUserWithEmailSent(ctx, cmd)
if err != nil {
return err
}
return nil
}
func (s *Service) GetTempUsersQuery(ctx context.Context, cmd *models.GetTempUsersQuery) error {
err := s.sqlStore.GetTempUsersQuery(ctx, cmd)
if err != nil {
return err
}
return nil
}
func (s *Service) GetTempUserByCode(ctx context.Context, cmd *models.GetTempUserByCodeQuery) error {
err := s.sqlStore.GetTempUserByCode(ctx, cmd)
if err != nil {
return err
}
return nil
}
func (s *Service) ExpireOldUserInvites(ctx context.Context, cmd *models.ExpireTempUsersCommand) error {
err := s.sqlStore.ExpireOldUserInvites(ctx, cmd)
if err != nil {
return err
}
return nil
}