@@ -77,43 +77,44 @@ func ReplacePrimaryEmailAddress(ctx context.Context, u *user_model.User, emailSt
7777 return err
7878 }
7979
80- if ! u .IsOrganization () {
81- // Check if address exists already
82- email , err := user_model .GetEmailAddressByEmail (ctx , emailStr )
83- if err != nil && ! errors .Is (err , util .ErrNotExist ) {
84- return err
85- }
86- if email != nil {
87- if email .IsPrimary && email .UID == u .ID {
88- return nil
80+ return db .WithTx (ctx , func (ctx context.Context ) error {
81+ if ! u .IsOrganization () {
82+ // Check if address exists already
83+ email , err := user_model .GetEmailAddressByEmail (ctx , emailStr )
84+ if err != nil && ! errors .Is (err , util .ErrNotExist ) {
85+ return err
86+ }
87+ if email != nil {
88+ if email .IsPrimary && email .UID == u .ID {
89+ return nil
90+ }
91+ return user_model.ErrEmailAlreadyUsed {Email : emailStr }
8992 }
90- return user_model.ErrEmailAlreadyUsed {Email : emailStr }
91- }
9293
93- // Remove old primary address
94- primary , err := user_model .GetPrimaryEmailAddressOfUser (ctx , u .ID )
95- if err != nil {
96- return err
97- }
98- if _ , err := db .DeleteByID [user_model.EmailAddress ](ctx , primary .ID ); err != nil {
99- return err
100- }
94+ // Remove old primary address
95+ primary , err := user_model .GetPrimaryEmailAddressOfUser (ctx , u .ID )
96+ if err != nil {
97+ return err
98+ }
99+ if _ , err := db .DeleteByID [user_model.EmailAddress ](ctx , primary .ID ); err != nil {
100+ return err
101+ }
101102
102- // Insert new primary address
103- email = & user_model.EmailAddress {
104- UID : u .ID ,
105- Email : emailStr ,
106- IsActivated : true ,
107- IsPrimary : true ,
108- }
109- if _ , err := user_model . InsertEmailAddress ( ctx , email ); err != nil {
110- return err
103+ // Insert new primary address
104+ if _ , err := user_model . InsertEmailAddress ( ctx , & user_model.EmailAddress {
105+ UID : u .ID ,
106+ Email : emailStr ,
107+ IsActivated : true ,
108+ IsPrimary : true ,
109+ }); err != nil {
110+ return err
111+ }
111112 }
112- }
113113
114- u .Email = emailStr
114+ u .Email = emailStr
115115
116- return user_model .UpdateUserCols (ctx , u , "email" )
116+ return user_model .UpdateUserCols (ctx , u , "email" )
117+ })
117118}
118119
119120func AddEmailAddresses (ctx context.Context , u * user_model.User , emails []string ) error {
0 commit comments