mirror of
https://codeberg.org/forgejo/forgejo.git
synced 2024-12-28 14:43:52 +03:00
parent
ddb0287bf6
commit
e8e56da9ac
2 changed files with 28 additions and 13 deletions
|
@ -821,21 +821,26 @@ func ChangeUserName(u *User, newUserName string) (err error) {
|
||||||
return os.Rename(UserPath(u.Name), UserPath(newUserName))
|
return os.Rename(UserPath(u.Name), UserPath(newUserName))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// checkDupEmail checks whether there are the same email with the user
|
||||||
|
func checkDupEmail(e Engine, u *User) error {
|
||||||
|
u.Email = strings.ToLower(u.Email)
|
||||||
|
has, err := e.
|
||||||
|
Where("id!=?", u.ID).
|
||||||
|
And("type=?", u.Type).
|
||||||
|
And("email=?", u.Email).
|
||||||
|
Get(new(User))
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
} else if has {
|
||||||
|
return ErrEmailAlreadyUsed{u.Email}
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
func updateUser(e Engine, u *User) error {
|
func updateUser(e Engine, u *User) error {
|
||||||
// Organization does not need email
|
// Organization does not need email
|
||||||
|
u.Email = strings.ToLower(u.Email)
|
||||||
if !u.IsOrganization() {
|
if !u.IsOrganization() {
|
||||||
u.Email = strings.ToLower(u.Email)
|
|
||||||
has, err := e.
|
|
||||||
Where("id!=?", u.ID).
|
|
||||||
And("type=?", u.Type).
|
|
||||||
And("email=?", u.Email).
|
|
||||||
Get(new(User))
|
|
||||||
if err != nil {
|
|
||||||
return err
|
|
||||||
} else if has {
|
|
||||||
return ErrEmailAlreadyUsed{u.Email}
|
|
||||||
}
|
|
||||||
|
|
||||||
if len(u.AvatarEmail) == 0 {
|
if len(u.AvatarEmail) == 0 {
|
||||||
u.AvatarEmail = u.Email
|
u.AvatarEmail = u.Email
|
||||||
}
|
}
|
||||||
|
@ -857,6 +862,16 @@ func UpdateUser(u *User) error {
|
||||||
return updateUser(x, u)
|
return updateUser(x, u)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// UpdateUserSetting updates user's settings.
|
||||||
|
func UpdateUserSetting(u *User) error {
|
||||||
|
if !u.IsOrganization() {
|
||||||
|
if err := checkDupEmail(x, u); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return updateUser(x, u)
|
||||||
|
}
|
||||||
|
|
||||||
// deleteBeans deletes all given beans, beans should contain delete conditions.
|
// deleteBeans deletes all given beans, beans should contain delete conditions.
|
||||||
func deleteBeans(e Engine, beans ...interface{}) (err error) {
|
func deleteBeans(e Engine, beans ...interface{}) (err error) {
|
||||||
for i := range beans {
|
for i := range beans {
|
||||||
|
|
|
@ -104,7 +104,7 @@ func SettingsPost(ctx *context.Context, form auth.UpdateProfileForm) {
|
||||||
ctx.User.KeepEmailPrivate = form.KeepEmailPrivate
|
ctx.User.KeepEmailPrivate = form.KeepEmailPrivate
|
||||||
ctx.User.Website = form.Website
|
ctx.User.Website = form.Website
|
||||||
ctx.User.Location = form.Location
|
ctx.User.Location = form.Location
|
||||||
if err := models.UpdateUser(ctx.User); err != nil {
|
if err := models.UpdateUserSetting(ctx.User); err != nil {
|
||||||
if _, ok := err.(models.ErrEmailAlreadyUsed); ok {
|
if _, ok := err.(models.ErrEmailAlreadyUsed); ok {
|
||||||
ctx.Flash.Error(ctx.Tr("form.email_been_used"))
|
ctx.Flash.Error(ctx.Tr("form.email_been_used"))
|
||||||
ctx.Redirect(setting.AppSubURL + "/user/settings")
|
ctx.Redirect(setting.AppSubURL + "/user/settings")
|
||||||
|
|
Loading…
Reference in a new issue