做几方面优化
This commit is contained in:
@@ -1,105 +1,121 @@
|
||||
package controllers
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"io"
|
||||
"strings"
|
||||
|
||||
"server/models"
|
||||
|
||||
beego "github.com/beego/beego/v2/server/web"
|
||||
)
|
||||
|
||||
type PlatformLoginVerifyController struct {
|
||||
beego.Controller
|
||||
}
|
||||
|
||||
type loginVerifyPayload struct {
|
||||
OpenVerifyEnabled *int8 `json:"openVerify_enabled"`
|
||||
VerifyType string `json:"use_geetest"`
|
||||
Geetest3ID *string `json:"geetest3_id"`
|
||||
Geetest3Key *string `json:"geetest3_key"`
|
||||
Geetest4ID *string `json:"geetest4_id"`
|
||||
Geetest4Key *string `json:"geetest4_key"`
|
||||
}
|
||||
|
||||
func normalizeVerifyType(v string) string {
|
||||
switch strings.TrimSpace(v) {
|
||||
case "sms", "geetest", "email", "captcha":
|
||||
return strings.TrimSpace(v)
|
||||
default:
|
||||
return "captcha"
|
||||
}
|
||||
}
|
||||
|
||||
// GetLoginVerifyInfos 获取登录验证配置
|
||||
// GET /platform/loginVerifyInfos
|
||||
func (c *PlatformLoginVerifyController) GetLoginVerifyInfos() {
|
||||
cfg, err := models.GetPlatformLoginVerify()
|
||||
if err != nil {
|
||||
c.Data["json"] = map[string]interface{}{"code": 500, "msg": "获取配置失败"}
|
||||
_ = c.ServeJSON()
|
||||
return
|
||||
}
|
||||
c.Data["json"] = map[string]interface{}{
|
||||
"code": 200,
|
||||
"msg": "success",
|
||||
"data": map[string]interface{}{
|
||||
"openVerify_enabled": cfg.OpenVerifyEnabled,
|
||||
"use_geetest": cfg.VerifyType,
|
||||
"geetest3_id": cfg.Geetest3ID,
|
||||
"geetest3_key": cfg.Geetest3Key,
|
||||
"geetest4_id": cfg.Geetest4ID,
|
||||
"geetest4_key": cfg.Geetest4Key,
|
||||
},
|
||||
}
|
||||
_ = c.ServeJSON()
|
||||
}
|
||||
|
||||
// SaveLoginVerifyInfos 保存登录验证配置
|
||||
// POST /platform/saveloginVerifyInfos
|
||||
func (c *PlatformLoginVerifyController) SaveLoginVerifyInfos() {
|
||||
var p loginVerifyPayload
|
||||
raw, _ := io.ReadAll(c.Ctx.Request.Body)
|
||||
if err := json.Unmarshal(raw, &p); err != nil {
|
||||
c.Data["json"] = map[string]interface{}{"code": 400, "msg": "参数错误"}
|
||||
_ = c.ServeJSON()
|
||||
return
|
||||
}
|
||||
|
||||
verifyType := normalizeVerifyType(p.VerifyType)
|
||||
openVerifyEnabled := int8(1)
|
||||
if p.OpenVerifyEnabled != nil {
|
||||
openVerifyEnabled = *p.OpenVerifyEnabled
|
||||
}
|
||||
if verifyType == "geetest" {
|
||||
if p.Geetest4ID == nil || strings.TrimSpace(*p.Geetest4ID) == "" {
|
||||
c.Data["json"] = map[string]interface{}{"code": 400, "msg": "geetest4_id 不能为空"}
|
||||
_ = c.ServeJSON()
|
||||
return
|
||||
}
|
||||
if p.Geetest4Key == nil || strings.TrimSpace(*p.Geetest4Key) == "" {
|
||||
c.Data["json"] = map[string]interface{}{"code": 400, "msg": "geetest4_key 不能为空"}
|
||||
_ = c.ServeJSON()
|
||||
return
|
||||
}
|
||||
}
|
||||
|
||||
err := models.SavePlatformLoginVerify(&models.PlatformLoginVerify{
|
||||
OpenVerifyEnabled: openVerifyEnabled,
|
||||
VerifyType: verifyType,
|
||||
Geetest3ID: p.Geetest3ID,
|
||||
Geetest3Key: p.Geetest3Key,
|
||||
Geetest4ID: p.Geetest4ID,
|
||||
Geetest4Key: p.Geetest4Key,
|
||||
})
|
||||
if err != nil {
|
||||
c.Data["json"] = map[string]interface{}{"code": 500, "msg": "保存失败"}
|
||||
_ = c.ServeJSON()
|
||||
return
|
||||
}
|
||||
|
||||
c.Data["json"] = map[string]interface{}{"code": 200, "msg": "保存成功"}
|
||||
_ = c.ServeJSON()
|
||||
}
|
||||
|
||||
package controllers
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"io"
|
||||
"strings"
|
||||
|
||||
"server/models"
|
||||
authsvc "server/services/auth"
|
||||
|
||||
beego "github.com/beego/beego/v2/server/web"
|
||||
)
|
||||
|
||||
type PlatformLoginVerifyController struct {
|
||||
beego.Controller
|
||||
}
|
||||
|
||||
type loginVerifyPayload struct {
|
||||
OpenVerifyEnabled *int8 `json:"openVerify_enabled"`
|
||||
VerifyType string `json:"use_geetest"`
|
||||
Geetest3ID *string `json:"geetest3_id"`
|
||||
Geetest3Key *string `json:"geetest3_key"`
|
||||
Geetest4ID *string `json:"geetest4_id"`
|
||||
Geetest4Key *string `json:"geetest4_key"`
|
||||
}
|
||||
|
||||
func normalizeVerifyType(v string) string {
|
||||
switch strings.TrimSpace(v) {
|
||||
case "sms", "geetest", "email", "captcha":
|
||||
return strings.TrimSpace(v)
|
||||
default:
|
||||
return "captcha"
|
||||
}
|
||||
}
|
||||
|
||||
// GetLoginVerifyInfos 获取登录验证配置
|
||||
// GET /platform/loginVerifyInfos
|
||||
func (c *PlatformLoginVerifyController) GetLoginVerifyInfos() {
|
||||
cfg, err := models.GetPlatformLoginVerify()
|
||||
if err != nil {
|
||||
c.Data["json"] = map[string]interface{}{"code": 500, "msg": "获取配置失败"}
|
||||
_ = c.ServeJSON()
|
||||
return
|
||||
}
|
||||
c.Data["json"] = map[string]interface{}{
|
||||
"code": 200,
|
||||
"msg": "success",
|
||||
"data": map[string]interface{}{
|
||||
"openVerify_enabled": cfg.OpenVerifyEnabled,
|
||||
"use_geetest": cfg.VerifyType,
|
||||
"geetest3_id": cfg.Geetest3ID,
|
||||
"geetest3_key": cfg.Geetest3Key,
|
||||
"geetest4_id": cfg.Geetest4ID,
|
||||
"geetest4_key": cfg.Geetest4Key,
|
||||
},
|
||||
}
|
||||
_ = c.ServeJSON()
|
||||
}
|
||||
|
||||
// GeetestCheck 极验配置自检:判断服务器能否访问极验、captcha_key 是否与 captcha_id 匹配
|
||||
// GET /platform/geetestCheck
|
||||
func (c *PlatformLoginVerifyController) GeetestCheck() {
|
||||
diag := authsvc.DiagnoseGeetest4()
|
||||
code := 200
|
||||
if ok, _ := diag["ok"].(bool); !ok {
|
||||
code = 500
|
||||
}
|
||||
c.Data["json"] = map[string]interface{}{
|
||||
"code": code,
|
||||
"msg": diag["msg"],
|
||||
"data": diag,
|
||||
}
|
||||
_ = c.ServeJSON()
|
||||
}
|
||||
|
||||
// SaveLoginVerifyInfos 保存登录验证配置
|
||||
// POST /platform/saveloginVerifyInfos
|
||||
func (c *PlatformLoginVerifyController) SaveLoginVerifyInfos() {
|
||||
var p loginVerifyPayload
|
||||
raw, _ := io.ReadAll(c.Ctx.Request.Body)
|
||||
if err := json.Unmarshal(raw, &p); err != nil {
|
||||
c.Data["json"] = map[string]interface{}{"code": 400, "msg": "参数错误"}
|
||||
_ = c.ServeJSON()
|
||||
return
|
||||
}
|
||||
|
||||
verifyType := normalizeVerifyType(p.VerifyType)
|
||||
openVerifyEnabled := int8(1)
|
||||
if p.OpenVerifyEnabled != nil {
|
||||
openVerifyEnabled = *p.OpenVerifyEnabled
|
||||
}
|
||||
if verifyType == "geetest" {
|
||||
if p.Geetest4ID == nil || strings.TrimSpace(*p.Geetest4ID) == "" {
|
||||
c.Data["json"] = map[string]interface{}{"code": 400, "msg": "geetest4_id 不能为空"}
|
||||
_ = c.ServeJSON()
|
||||
return
|
||||
}
|
||||
if p.Geetest4Key == nil || strings.TrimSpace(*p.Geetest4Key) == "" {
|
||||
c.Data["json"] = map[string]interface{}{"code": 400, "msg": "geetest4_key 不能为空"}
|
||||
_ = c.ServeJSON()
|
||||
return
|
||||
}
|
||||
}
|
||||
|
||||
err := models.SavePlatformLoginVerify(&models.PlatformLoginVerify{
|
||||
OpenVerifyEnabled: openVerifyEnabled,
|
||||
VerifyType: verifyType,
|
||||
Geetest3ID: p.Geetest3ID,
|
||||
Geetest3Key: p.Geetest3Key,
|
||||
Geetest4ID: p.Geetest4ID,
|
||||
Geetest4Key: p.Geetest4Key,
|
||||
})
|
||||
if err != nil {
|
||||
c.Data["json"] = map[string]interface{}{"code": 500, "msg": "保存失败"}
|
||||
_ = c.ServeJSON()
|
||||
return
|
||||
}
|
||||
|
||||
c.Data["json"] = map[string]interface{}{"code": 200, "msg": "保存成功"}
|
||||
_ = c.ServeJSON()
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user