🎨 新增ip检测配置功能

This commit is contained in:
2025-11-16 22:55:13 +08:00
parent 6e924c9630
commit 598d5e439a
8 changed files with 175 additions and 20 deletions

View File

@@ -55,7 +55,7 @@ func (*AppUserApi) Login(ctx *gin.Context) {
return
}
user, err := appUserService.Login(p)
user, isNewUser, err := appUserService.Login(p)
if err != nil {
r.FailWithMessage("登录失败", ctx)
return
@@ -104,6 +104,7 @@ func (*AppUserApi) Login(ctx *gin.Context) {
"User": user,
"Token": token,
"ExpiresAt": claims.RegisteredClaims.ExpiresAt.Unix() * 1000,
"IsNewUser": isNewUser,
}, "登录成功", ctx)
} else if err != nil {
global.GVA_LOG.Error("设置登录状态失败!", zap.Error(err))
@@ -127,7 +128,7 @@ func (*AppUserApi) WechatLogin(ctx *gin.Context) {
return
}
user, err := appUserService.WechatLogin(info)
user, isNewUser, err := appUserService.WechatLogin(info)
if err != nil {
r.FailWithMessage("登录失败:"+err.Error(), ctx)
return
@@ -158,17 +159,29 @@ func (*AppUserApi) WechatLogin(ctx *gin.Context) {
}
}()
adcodes := utils.CheckIPInAdcodes(loginLog.Address)
if !adcodes {
global.GVA_LOG.Warn("异常登录地址", zap.String("address", loginLog.Address), zap.Uint("userId", user.ID))
// 判断是否为新用户
if isNewUser {
ipCheckStatus := false
user.Status = 0
if err := global.GVA_DB.Save(&user).Error; err != nil {
global.GVA_LOG.Error("禁用用户失败!", zap.Error(err))
err = global.GVA_DB.Model(&user2.IpCheck{}).Select("status").Scan(&ipCheckStatus).Error
if err != nil {
global.GVA_LOG.Error("获取IP检测状态失败", zap.Error(err))
}
r.Banned("用户已被禁用", ctx)
return
if ipCheckStatus {
adcodes := utils.CheckIPInAdcodes(loginLog.Address)
if !adcodes {
global.GVA_LOG.Warn("异常登录地址", zap.String("address", loginLog.Address), zap.Uint("userId", user.ID))
user.Status = 0
if err := global.GVA_DB.Save(&user).Error; err != nil {
global.GVA_LOG.Error("禁用用户失败!", zap.Error(err))
}
r.Banned("用户已被禁用", ctx)
return
}
}
}
// 生成token
@@ -195,6 +208,7 @@ func (*AppUserApi) WechatLogin(ctx *gin.Context) {
"User": user,
"Token": token,
"ExpiresAt": claims.RegisteredClaims.ExpiresAt.Unix() * 1000,
"IsNewUser": isNewUser,
}, "登录成功", ctx)
}