[GITEA] Allow changing the email address before activation (squash)

See https://codeberg.org/forgejo/forgejo/pulls/2300
This commit is contained in:
Earl Warren 2024-02-05 16:49:19 +01:00
parent ecfc3cb3f0
commit 030cdd6ae2
No known key found for this signature in database
GPG key ID: 0579CB2928A78A00
5 changed files with 52 additions and 52 deletions

View file

@ -145,6 +145,33 @@ func AddEmailAddresses(ctx context.Context, u *user_model.User, emails []string)
return nil
}
// ReplaceInactivePrimaryEmail replaces the primary email of a given user, even if the primary is not yet activated.
func ReplaceInactivePrimaryEmail(ctx context.Context, oldEmail string, email *user_model.EmailAddress) error {
user := &user_model.User{}
has, err := db.GetEngine(ctx).ID(email.UID).Get(user)
if err != nil {
return err
} else if !has {
return user_model.ErrUserNotExist{
UID: email.UID,
Name: "",
KeyID: 0,
}
}
err = AddEmailAddresses(ctx, user, []string{email.Email})
if err != nil {
return err
}
err = user_model.MakeEmailPrimaryWithUser(ctx, user, email)
if err != nil {
return err
}
return DeleteEmailAddresses(ctx, user, []string{oldEmail})
}
func DeleteEmailAddresses(ctx context.Context, u *user_model.User, emails []string) error {
for _, emailStr := range emails {
// Check if address exists