From f2c51a494c59273fd25b2b4a884ce8dc4a266ac8 Mon Sep 17 00:00:00 2001 From: JustSong Date: Sun, 14 Jan 2024 14:08:39 +0800 Subject: [PATCH] feat: able to login via email (close #921) --- model/user.go | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/model/user.go b/model/user.go index e738b1ba..f08acd23 100644 --- a/model/user.go +++ b/model/user.go @@ -141,7 +141,15 @@ func (user *User) ValidateAndFill() (err error) { if user.Username == "" || password == "" { return errors.New("用户名或密码为空") } - DB.Where(User{Username: user.Username}).First(user) + err = DB.Where("username = ?", user.Username).First(user).Error + if err != nil { + // we must make sure check username firstly + // consider this case: a malicious user set his username as other's email + err := DB.Where("email = ?", user.Username).First(user).Error + if err != nil { + return errors.New("用户名或密码错误,或用户已被封禁") + } + } okay := common.ValidatePasswordAndHash(password, user.Password) if !okay || user.Status != common.UserStatusEnabled { return errors.New("用户名或密码错误,或用户已被封禁")