From af83a09a92a35d55fc72e65582fb3bb45fe292b3 Mon Sep 17 00:00:00 2001 From: idafurjes <36131195+idafurjes@users.noreply.github.com> Date: Thu, 4 Aug 2022 13:47:30 +0200 Subject: [PATCH] Chore: Add user service method GetByEmail (#53298) --- .../login/authinfoservice/database/database.go | 7 ++++--- pkg/services/sqlstore/mockstore/mockstore.go | 4 ---- pkg/services/sqlstore/store.go | 1 - pkg/services/user/model.go | 4 ++++ pkg/services/user/user.go | 1 + pkg/services/user/userimpl/user.go | 10 ++++++++++ pkg/services/user/usertest/fake.go | 4 ++++ 7 files changed, 23 insertions(+), 8 deletions(-) diff --git a/pkg/services/login/authinfoservice/database/database.go b/pkg/services/login/authinfoservice/database/database.go index bbcdfae029c..7ceb1143211 100644 --- a/pkg/services/login/authinfoservice/database/database.go +++ b/pkg/services/login/authinfoservice/database/database.go @@ -244,12 +244,13 @@ func (s *AuthInfoStore) GetUserByLogin(ctx context.Context, login string) (*user } func (s *AuthInfoStore) GetUserByEmail(ctx context.Context, email string) (*user.User, error) { - query := models.GetUserByEmailQuery{Email: email} - if err := s.sqlStore.GetUserByEmail(ctx, &query); err != nil { + query := user.GetUserByEmailQuery{Email: email} + usr, err := s.userService.GetByEmail(ctx, &query) + if err != nil { return nil, err } - return query.Result, nil + return usr, nil } // decodeAndDecrypt will decode the string with the standard base64 decoder and then decrypt it diff --git a/pkg/services/sqlstore/mockstore/mockstore.go b/pkg/services/sqlstore/mockstore/mockstore.go index 16b6abc6069..27817fc64b9 100644 --- a/pkg/services/sqlstore/mockstore/mockstore.go +++ b/pkg/services/sqlstore/mockstore/mockstore.go @@ -137,10 +137,6 @@ func (m *SQLStoreMock) CreateUser(ctx context.Context, cmd user.CreateUserComman return nil, m.ExpectedError } -func (m *SQLStoreMock) GetUserByEmail(ctx context.Context, query *models.GetUserByEmailQuery) error { - return m.ExpectedError -} - func (m *SQLStoreMock) UpdateUser(ctx context.Context, cmd *models.UpdateUserCommand) error { return m.ExpectedError } diff --git a/pkg/services/sqlstore/store.go b/pkg/services/sqlstore/store.go index 15a6e7c33f2..e2a84b1530f 100644 --- a/pkg/services/sqlstore/store.go +++ b/pkg/services/sqlstore/store.go @@ -31,7 +31,6 @@ type Store interface { GetUserLoginAttemptCount(ctx context.Context, query *models.GetUserLoginAttemptCountQuery) error DeleteOldLoginAttempts(ctx context.Context, cmd *models.DeleteOldLoginAttemptsCommand) error CreateUser(ctx context.Context, cmd user.CreateUserCommand) (*user.User, error) - GetUserByEmail(ctx context.Context, query *models.GetUserByEmailQuery) error UpdateUser(ctx context.Context, cmd *models.UpdateUserCommand) error ChangeUserPassword(ctx context.Context, cmd *models.ChangeUserPasswordCommand) error UpdateUserLastSeenAt(ctx context.Context, cmd *models.UpdateUserLastSeenAtCommand) error diff --git a/pkg/services/user/model.go b/pkg/services/user/model.go index 6afa4329553..0983886355a 100644 --- a/pkg/services/user/model.go +++ b/pkg/services/user/model.go @@ -62,6 +62,10 @@ type GetUserByLoginQuery struct { LoginOrEmail string } +type GetUserByEmailQuery struct { + Email string +} + func (u *User) NameOrFallback() string { if u.Name != "" { return u.Name diff --git a/pkg/services/user/user.go b/pkg/services/user/user.go index 51eb599cfe9..6863fc3a6bd 100644 --- a/pkg/services/user/user.go +++ b/pkg/services/user/user.go @@ -9,4 +9,5 @@ type Service interface { Delete(context.Context, *DeleteUserCommand) error GetByID(context.Context, *GetUserByIDQuery) (*User, error) GetByLogin(context.Context, *GetUserByLoginQuery) (*User, error) + GetByEmail(context.Context, *GetUserByEmailQuery) (*User, error) } diff --git a/pkg/services/user/userimpl/user.go b/pkg/services/user/userimpl/user.go index 912f9d49ff0..aab551a0cb0 100644 --- a/pkg/services/user/userimpl/user.go +++ b/pkg/services/user/userimpl/user.go @@ -257,3 +257,13 @@ func (s *Service) GetByLogin(ctx context.Context, query *user.GetUserByLoginQuer } return q.Result, nil } + +// TODO: remove wrapper around sqlstore +func (s *Service) GetByEmail(ctx context.Context, query *user.GetUserByEmailQuery) (*user.User, error) { + q := models.GetUserByEmailQuery{Email: query.Email} + err := s.sqlStore.GetUserByEmail(ctx, &q) + if err != nil { + return nil, err + } + return q.Result, nil +} diff --git a/pkg/services/user/usertest/fake.go b/pkg/services/user/usertest/fake.go index 90b30d61524..d546b940982 100644 --- a/pkg/services/user/usertest/fake.go +++ b/pkg/services/user/usertest/fake.go @@ -30,3 +30,7 @@ func (f *FakeUserService) GetByID(ctx context.Context, query *user.GetUserByIDQu func (f *FakeUserService) GetByLogin(ctx context.Context, query *user.GetUserByLoginQuery) (*user.User, error) { return f.ExpectedUser, f.ExpectedError } + +func (f *FakeUserService) GetByEmail(ctx context.Context, query *user.GetUserByEmailQuery) (*user.User, error) { + return f.ExpectedUser, f.ExpectedError +}