From 943cdea855ef89f9ae0db0d2a16317b1d7c1fea4 Mon Sep 17 00:00:00 2001 From: Kat Yang <69819079+yangkb09@users.noreply.github.com> Date: Fri, 12 Aug 2022 12:13:23 -0400 Subject: [PATCH] Chore: Add tempuser service (#53325) * Chore: Add tempuser service * Add implementation * Fix linter; Inject tempUser into wire and HTTPServer * Fix errors --- pkg/api/http_server.go | 8 ++- pkg/api/org_invite.go | 2 +- pkg/server/wire.go | 2 + pkg/services/temp_user/temp_user.go | 16 +++++ pkg/services/temp_user/tempuserimpl/store.go | 1 + .../temp_user/tempuserimpl/store_test.go | 1 + .../temp_user/tempuserimpl/temp_user.go | 70 +++++++++++++++++++ 7 files changed, 96 insertions(+), 4 deletions(-) create mode 100644 pkg/services/temp_user/temp_user.go create mode 100644 pkg/services/temp_user/tempuserimpl/store.go create mode 100644 pkg/services/temp_user/tempuserimpl/store_test.go create mode 100644 pkg/services/temp_user/tempuserimpl/temp_user.go diff --git a/pkg/api/http_server.go b/pkg/api/http_server.go index 705dd12f3a4..5209a9ab045 100644 --- a/pkg/api/http_server.go +++ b/pkg/api/http_server.go @@ -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") diff --git a/pkg/api/org_invite.go b/pkg/api/org_invite.go index 0e1a824ba76..93da59885f9 100644 --- a/pkg/api/org_invite.go +++ b/pkg/api/org_invite.go @@ -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) } diff --git a/pkg/server/wire.go b/pkg/server/wire.go index 68cd6147429..521a1bfcc7e 100644 --- a/pkg/server/wire.go +++ b/pkg/server/wire.go @@ -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, diff --git a/pkg/services/temp_user/temp_user.go b/pkg/services/temp_user/temp_user.go new file mode 100644 index 00000000000..e1f9ee844e2 --- /dev/null +++ b/pkg/services/temp_user/temp_user.go @@ -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 +} diff --git a/pkg/services/temp_user/tempuserimpl/store.go b/pkg/services/temp_user/tempuserimpl/store.go new file mode 100644 index 00000000000..f790e452fbc --- /dev/null +++ b/pkg/services/temp_user/tempuserimpl/store.go @@ -0,0 +1 @@ +package tempuserimpl diff --git a/pkg/services/temp_user/tempuserimpl/store_test.go b/pkg/services/temp_user/tempuserimpl/store_test.go new file mode 100644 index 00000000000..f790e452fbc --- /dev/null +++ b/pkg/services/temp_user/tempuserimpl/store_test.go @@ -0,0 +1 @@ +package tempuserimpl diff --git a/pkg/services/temp_user/tempuserimpl/temp_user.go b/pkg/services/temp_user/tempuserimpl/temp_user.go new file mode 100644 index 00000000000..d9d3e61821a --- /dev/null +++ b/pkg/services/temp_user/tempuserimpl/temp_user.go @@ -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 +}