Browse Source

fix-2775

tags/v1.22.11.3^2
liuzx 3 years ago
parent
commit
215a6665a7
4 changed files with 42 additions and 0 deletions
  1. +21
    -0
      models/user_mail.go
  2. +4
    -0
      modules/auth/user_form.go
  3. +2
    -0
      routers/routes/routes.go
  4. +15
    -0
      routers/user/auth.go

+ 21
- 0
models/user_mail.go View File

@@ -216,6 +216,27 @@ func (email *EmailAddress) updateActivation(e Engine, activate bool) error {
return updateUserCols(e, user, "rands")
}

// UpdateEmailAddress update an email address of given user.
func (email *EmailAddress) UpdateEmailAddress(newEmailAddress string) error {
return email.updateEmailAddress(x, newEmailAddress)
}
func (email *EmailAddress) updateEmailAddress(e Engine, newEmailAddress string) error {
user, err := getUserByID(e, email.UID)
if err != nil {
return err
}
if user.Rands, err = GetUserSalt(); err != nil {
return err
}
user.Email = newEmailAddress
user.AvatarEmail = newEmailAddress
email.Email = newEmailAddress
if _, err := e.ID(email.ID).Cols("email").Update(email); err != nil {
return err
}
return updateUserCols(e, user, "email", "avartar_email")
}

// DeleteEmailAddress deletes an email address of given user.
func DeleteEmailAddress(email *EmailAddress) (err error) {
var deleted int64


+ 4
- 0
modules/auth/user_form.go View File

@@ -88,6 +88,10 @@ type RegisterForm struct {
Agree bool
}

type UpdateEmailForm struct {
NewEmail string `binding:"Required;NewEmail;MaxSize(254)"`
}

// Validate valideates the fields
func (f *RegisterForm) Validate(ctx *macaron.Context, errs binding.Errors) binding.Errors {
return validate(errs, ctx.Data, f, ctx.Locale)


+ 2
- 0
routers/routes/routes.go View File

@@ -417,6 +417,8 @@ func RegisterRoutes(m *macaron.Macaron) {
}, openIDSignInEnabled)
m.Get("/sign_up", user.SignUp)
m.Post("/sign_up", bindIgnErr(auth.RegisterForm{}), user.SignUpPost)
m.Post("/sign_up/update_email", bindIgnErr(auth.UpdateEmailForm{}), user.UpdateEmailPost)
m.Post("/sign_up/resend_email", user.ResendEmailPost)
m.Group("/oauth2", func() {
m.Get("/:provider", user.SignInOAuth)
m.Get("/:provider/callback", user.SignInOAuthCallback)


+ 15
- 0
routers/user/auth.go View File

@@ -1413,6 +1413,21 @@ func SignUpPost(ctx *context.Context, cpt *captcha.Captcha, form auth.RegisterFo
handleSignInFull(ctx, u, false, true)
}

func UpdateEmailPost(ctx *context.Context, form auth.UpdateEmailForm) {
newEmailAddress := form.NewEmail
if used, err := models.IsEmailUsed(newEmailAddress); used {
ctx.ServerError(ctx.Tr("form.email_been_used"), err)
return
}
user := ctx.User
email, err := models.GetEmailAddressByIDAndEmail(user.ID, user.Email)
if err != nil {
ctx.ServerError("GetEmailAddressByIDAndEmail failed", err)
return
}
email.UpdateEmailAddress(newEmailAddress)
}

// Activate render activate user page
func Activate(ctx *context.Context) {
code := ctx.Query("code")


Loading…
Cancel
Save