@@ -136,18 +136,25 @@ func (r *UserRepo) innerValidateInviteCode(ctx context.Context, tx *db.Tx, code
136136 return ic , nil
137137}
138138
139- func (r * UserRepo ) CreateUser (ctx context.Context , user * db.User ) (* db.User , error ) {
139+ func (r * UserRepo ) CreateUser (ctx context.Context , us * db.User ) (* db.User , error ) {
140140 var res * db.User
141141 err := entx .WithTx (ctx , r .db , func (tx * db.Tx ) error {
142142 if err := r .checkLimit (ctx , tx ); err != nil {
143143 return err
144144 }
145+ n , err := tx .User .Query ().Where (user .Email (us .Email )).Count (ctx )
146+ if err != nil {
147+ return err
148+ }
149+ if n > 0 {
150+ return errcode .ErrAccountAlreadyExist
151+ }
145152 u , err := tx .User .Create ().
146- SetUsername (user .Username ).
147- SetEmail (user .Email ).
148- SetPassword (user .Password ).
149- SetStatus (user .Status ).
150- SetPlatform (user .Platform ).
153+ SetUsername (us .Username ).
154+ SetEmail (us .Email ).
155+ SetPassword (us .Password ).
156+ SetStatus (us .Status ).
157+ SetPlatform (us .Platform ).
151158 Save (ctx )
152159 if err != nil {
153160 return err
@@ -377,7 +384,8 @@ func (r *UserRepo) OAuthRegister(ctx context.Context, platform consts.UserPlatfo
377384 Where (useridentity .Platform (platform ), useridentity .IdentityID (req .ID )).
378385 First (ctx )
379386 if err == nil {
380- return fmt .Errorf ("user already exists for platform %s and identity ID %s" , platform , req .ID )
387+ e := fmt .Errorf ("user already exists for platform %s and identity ID %s" , platform , req .ID )
388+ return errcode .ErrAccountAlreadyExist .Wrap (e )
381389 }
382390 if ! db .IsNotFound (err ) {
383391 return err
0 commit comments