From 3b2321d5dbbb1512225fb157206046495d90fdd3 Mon Sep 17 00:00:00 2001 From: ericprd Date: Mon, 24 Feb 2025 19:47:40 +0800 Subject: [PATCH] fix: handle duplicate input --- internal/accessor/staff/get_staff.go | 4 ++-- internal/accessor/staff/impl.go | 2 +- internal/accessor/user_repository/get_user.go | 6 +++--- internal/accessor/user_repository/impl.go | 3 +-- internal/services/auth/login_as_user.go | 4 ++-- internal/services/auth/register_staff.go | 4 ++++ internal/services/auth/register_user.go | 6 ++++++ 7 files changed, 19 insertions(+), 10 deletions(-) diff --git a/internal/accessor/staff/get_staff.go b/internal/accessor/staff/get_staff.go index 94df39f..bb87ee0 100644 --- a/internal/accessor/staff/get_staff.go +++ b/internal/accessor/staff/get_staff.go @@ -7,8 +7,8 @@ import ( "gorm.io/gorm" ) -func (sr *StaffRepository) GetStaffByEmail(email string) (*authdomain.LoginRepoResponse, error) { - var staff authdomain.LoginRepoResponse +func (sr *StaffRepository) GetStaffByEmail(email string) (*authdomain.Staff, error) { + var staff authdomain.Staff if email == "" { return nil, errors.New("email is empty") diff --git a/internal/accessor/staff/impl.go b/internal/accessor/staff/impl.go index bf59de2..b7c8573 100644 --- a/internal/accessor/staff/impl.go +++ b/internal/accessor/staff/impl.go @@ -10,7 +10,7 @@ type StaffRepository struct { } type StaffIntf interface { - GetStaffByEmail(string) (*authdomain.LoginRepoResponse, error) + GetStaffByEmail(string) (*authdomain.Staff, error) Create(*authdomain.Staff) (*authdomain.Staff, error) } diff --git a/internal/accessor/user_repository/get_user.go b/internal/accessor/user_repository/get_user.go index 31c30e8..2c080b5 100644 --- a/internal/accessor/user_repository/get_user.go +++ b/internal/accessor/user_repository/get_user.go @@ -3,12 +3,12 @@ package userrepository import ( "errors" - usermodel "github.com/ardeman/project-legalgo-go/database/user" + authdomain "github.com/ardeman/project-legalgo-go/internal/domain/auth" "gorm.io/gorm" ) -func (ur *UserRepository) GetUserByEmail(email string) (*usermodel.User, error) { - var user usermodel.User +func (ur *UserRepository) GetUserByEmail(email string) (*authdomain.User, error) { + var user authdomain.User if email == "" { return nil, errors.New("email is empty") diff --git a/internal/accessor/user_repository/impl.go b/internal/accessor/user_repository/impl.go index 2d44e92..3a1edbd 100644 --- a/internal/accessor/user_repository/impl.go +++ b/internal/accessor/user_repository/impl.go @@ -2,7 +2,6 @@ package userrepository import ( "github.com/ardeman/project-legalgo-go/database" - usermodel "github.com/ardeman/project-legalgo-go/database/user" authdomain "github.com/ardeman/project-legalgo-go/internal/domain/auth" ) @@ -11,7 +10,7 @@ type UserRepository struct { } type UserIntf interface { - GetUserByEmail(string) (*usermodel.User, error) + GetUserByEmail(string) (*authdomain.User, error) CreateUser(*authdomain.User) (*authdomain.User, error) } diff --git a/internal/services/auth/login_as_user.go b/internal/services/auth/login_as_user.go index b68d56f..8939115 100644 --- a/internal/services/auth/login_as_user.go +++ b/internal/services/auth/login_as_user.go @@ -7,8 +7,8 @@ import ( "github.com/ardeman/project-legalgo-go/internal/utilities/utils" ) -func (sv *AuthSvc) LoginAsUser(spec authdomain.LoginReq) (string, error) { - user, err := sv.userRepo.GetUserByEmail(spec.Email) +func (a *AuthSvc) LoginAsUser(spec authdomain.LoginReq) (string, error) { + user, err := a.userRepo.GetUserByEmail(spec.Email) if err != nil { return "", errors.New(err.Error()) } diff --git a/internal/services/auth/register_staff.go b/internal/services/auth/register_staff.go index 25f1578..40efe76 100644 --- a/internal/services/auth/register_staff.go +++ b/internal/services/auth/register_staff.go @@ -9,6 +9,10 @@ import ( ) func (a *AuthSvc) RegisterStaff(spec authdomain.RegisterStaffReq) (string, error) { + _, err := a.staffRepo.GetStaffByEmail(spec.Email) + if err == nil { + return "", errors.New("this email address is already in use") + } hashedPwd, err := HashPassword(spec.Password) if err != nil { return "", err diff --git a/internal/services/auth/register_user.go b/internal/services/auth/register_user.go index 9a273fa..402e947 100644 --- a/internal/services/auth/register_user.go +++ b/internal/services/auth/register_user.go @@ -9,6 +9,12 @@ import ( ) func (a *AuthSvc) RegisterUser(spec authdomain.RegisterUserReq) (string, error) { + _, err := a.userRepo.GetUserByEmail(spec.Email) + + if err == nil { + return "", errors.New("this email address is already in use") + } + subsId, err := a.subsRepo.Create(spec.SubscribePlanID) if err != nil { return "", nil