add email white list check in register handler

This commit is contained in:
RockYang
2024-09-20 14:10:40 +08:00
parent 246d96ee63
commit c522248d39
4 changed files with 123 additions and 7 deletions

View File

@@ -140,3 +140,68 @@ func (h *ConfigHandler) GetLicense(c *gin.Context) {
license := h.licenseService.GetLicense()
resp.SUCCESS(c, license)
}
// FixData 修复数据
func (h *ConfigHandler) FixData(c *gin.Context) {
var fixed bool
version := "data_fix_4.1.4"
err := h.levelDB.Get(version, &fixed)
if err == nil || fixed {
resp.ERROR(c, "当前版本数据修复已完成,请不要重复执行操作")
return
}
tx := h.DB.Begin()
var users []model.User
err = tx.Find(&users).Error
if err != nil {
resp.ERROR(c, err.Error())
return
}
for _, user := range users {
if user.Email != "" || user.Mobile != "" {
continue
}
if utils.IsValidEmail(user.Username) {
user.Email = user.Username
} else if utils.IsValidMobile(user.Username) {
user.Mobile = user.Username
}
err = tx.Save(&user).Error
if err != nil {
resp.ERROR(c, err.Error())
tx.Rollback()
return
}
}
var orders []model.Order
err = h.DB.Find(&orders).Error
if err != nil {
resp.ERROR(c, err.Error())
return
}
for _, order := range orders {
if order.PayWay == "支付宝" {
order.PayWay = "alipay"
order.PayType = "alipay"
} else if order.PayWay == "微信支付" {
order.PayWay = "wechat"
order.PayType = "wxpay"
} else if order.PayWay == "hupi" {
order.PayType = "wxpay"
}
err = tx.Save(&order).Error
if err != nil {
resp.ERROR(c, err.Error())
tx.Rollback()
return
}
}
tx.Commit()
err = h.levelDB.Put(version, true)
if err != nil {
resp.ERROR(c, err.Error())
return
}
resp.SUCCESS(c)
}

View File

@@ -307,11 +307,12 @@ func main() {
// 管理后台控制器
fx.Invoke(func(s *core.AppServer, h *admin.ConfigHandler) {
group := s.Engine.Group("/api/admin/")
group.POST("config/update", h.Update)
group.GET("config/get", h.Get)
group := s.Engine.Group("/api/admin/config")
group.POST("update", h.Update)
group.GET("get", h.Get)
group.POST("active", h.Active)
group.GET("config/get/license", h.GetLicense)
group.GET("fixData", h.FixData)
group.GET("license", h.GetLicense)
}),
fx.Invoke(func(s *core.AppServer, h *admin.ManagerHandler) {
group := s.Engine.Group("/api/admin/")

View File

@@ -12,6 +12,7 @@ import (
"encoding/hex"
"encoding/json"
"fmt"
"regexp"
"strings"
"time"
"unicode"
@@ -134,3 +135,17 @@ func GenRedeemCode(codeLength int) (string, error) {
}
return hex.EncodeToString(bytes), nil
}
// IsValidEmail 检查给定的字符串是否是有效的电子邮件地址
func IsValidEmail(email string) bool {
// 这个正则表达式匹配大多数常见的邮箱格式
emailRegex := regexp.MustCompile(`^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$`)
return emailRegex.MatchString(email)
}
// IsValidMobile 检查给定的字符串是否是有效的中国大陆手机号
func IsValidMobile(phone string) bool {
// 支持 13x, 14x, 15x, 16x, 17x, 18x, 19x 开头的号码
phoneRegex := regexp.MustCompile(`^1[3-9]\d{9}$`)
return phoneRegex.MatchString(phone)
}