邮箱注册要求

This commit is contained in:
ryan
2026-06-12 10:29:40 +08:00
parent 63e3ade7f4
commit d9df78d2c7
9 changed files with 607 additions and 174 deletions
+19 -4
View File
@@ -11,6 +11,7 @@ import (
"github.com/Rain-kl/Wavelet/internal/apps/oauth"
"github.com/Rain-kl/Wavelet/internal/common"
"github.com/Rain-kl/Wavelet/internal/config"
"github.com/Rain-kl/Wavelet/internal/db"
"github.com/Rain-kl/Wavelet/internal/db/idgen"
"github.com/Rain-kl/Wavelet/internal/model"
@@ -64,14 +65,19 @@ func setLoginSession(ctx context.Context, c *gin.Context, user *model.User) erro
session.Set(oauth.UserNameKey, user.Username)
// 根据系统配置动态设置 Session 过期时间
maxAge := 0
maxAge := config.Config.App.SessionAge
isSessionCookie := false
ttlHours, err := model.GetIntByKey(ctx, model.ConfigKeyLoginSessionTTLHours)
if err == nil {
if ttlHours == -1 {
switch {
case ttlHours == -1:
// 永不过期,设置为 10 年
maxAge = 10 * 365 * 24 * 3600
} else if ttlHours > 0 {
case ttlHours > 0:
maxAge = ttlHours * 3600
case ttlHours == 0:
isSessionCookie = true
}
}
session.Options(util.GetSessionOptions(maxAge))
@@ -79,6 +85,11 @@ func setLoginSession(ctx context.Context, c *gin.Context, user *model.User) erro
if err := session.Save(); err != nil {
return err
}
if isSessionCookie {
util.StripCookieMaxAgeAndExpires(c.Writer.Header(), config.Config.App.SessionCookieName)
}
return nil
}
@@ -111,7 +122,7 @@ func Login(c *gin.Context) {
var user model.User
ctx := c.Request.Context()
if err := db.DB(ctx).Where("username = ?", req.Username).First(&user).Error; err != nil {
if err := db.DB(ctx).Where("username = ? OR email = ?", req.Username, req.Username).First(&user).Error; err != nil {
c.JSON(http.StatusOK, util.Err(errUsernameOrPasswordWrong))
return
}
@@ -193,6 +204,10 @@ func Register(c *gin.Context) {
c.JSON(http.StatusOK, util.Err(errInvalidParams))
return
}
if req.Email == "" {
c.JSON(http.StatusOK, util.Err(errEmailRequired))
return
}
if len(req.Password) < minPasswordLength {
c.JSON(http.StatusOK, util.Err(errPasswordTooShort))
return