133 lines
4.1 KiB
Go
133 lines
4.1 KiB
Go
package models
|
|
|
|
import "time"
|
|
|
|
// PlatformLoginVerify 平台登录验证配置(单行配置)
|
|
type PlatformLoginVerify struct {
|
|
ID uint64 `orm:"column(id);pk;auto" json:"id"`
|
|
OpenVerifyEnabled int8 `orm:"column(open_verify_enabled);default(1)" json:"openVerify_enabled"` // 0关闭 1开启
|
|
VerifyType string `orm:"column(verify_type);size(20);default(captcha)" json:"verify_type"` // captcha/sms/geetest/email
|
|
Geetest3ID *string `orm:"column(geetest3_id);size(128);null" json:"geetest3_id"`
|
|
Geetest3Key *string `orm:"column(geetest3_key);size(255);null" json:"geetest3_key"`
|
|
Geetest4ID *string `orm:"column(geetest4_id);size(128);null" json:"geetest4_id"`
|
|
Geetest4Key *string `orm:"column(geetest4_key);size(255);null" json:"geetest4_key"`
|
|
CreateTime time.Time `orm:"column(create_time);type(datetime);auto_now_add" json:"create_time"`
|
|
UpdateTime *time.Time `orm:"column(update_time);type(datetime);auto_now;null" json:"update_time"`
|
|
}
|
|
|
|
func GetPlatformLoginVerify() (*PlatformLoginVerify, error) {
|
|
// 从 yz_platform_normal_setting 表中按 code 获取各个配置
|
|
enabledStr := GetPlatformSettingValue("login_verify_enabled", "1")
|
|
verifyType := GetPlatformSettingValue("login_verify_type", "captcha")
|
|
geetest3ID := GetPlatformSettingValue("login_verify_geetest3_id", "")
|
|
geetest3Key := GetPlatformSettingValue("login_verify_geetest3_key", "")
|
|
geetest4ID := GetPlatformSettingValue("login_verify_geetest4_id", "")
|
|
geetest4Key := GetPlatformSettingValue("login_verify_geetest4_key", "")
|
|
|
|
openVerifyEnabled := int8(1)
|
|
if enabledStr == "0" {
|
|
openVerifyEnabled = 0
|
|
}
|
|
|
|
cfg := &PlatformLoginVerify{
|
|
OpenVerifyEnabled: openVerifyEnabled,
|
|
VerifyType: verifyType,
|
|
}
|
|
if geetest3ID != "" {
|
|
cfg.Geetest3ID = &geetest3ID
|
|
}
|
|
if geetest3Key != "" {
|
|
cfg.Geetest3Key = &geetest3Key
|
|
}
|
|
if geetest4ID != "" {
|
|
cfg.Geetest4ID = &geetest4ID
|
|
}
|
|
if geetest4Key != "" {
|
|
cfg.Geetest4Key = &geetest4Key
|
|
}
|
|
|
|
return cfg, nil
|
|
}
|
|
|
|
func GetPlatformSettingValue(code string, defaultVal string) string {
|
|
var setting PlatformNormalSetting
|
|
err := Orm.QueryTable(new(PlatformNormalSetting)).
|
|
Filter("code", code).
|
|
Filter("delete_time__isnull", true).
|
|
One(&setting)
|
|
if err != nil {
|
|
return defaultVal
|
|
}
|
|
return setting.Value
|
|
}
|
|
|
|
func SavePlatformLoginVerify(cfg *PlatformLoginVerify) error {
|
|
openVerifyEnabledStr := "1"
|
|
if cfg.OpenVerifyEnabled == 0 {
|
|
openVerifyEnabledStr = "0"
|
|
}
|
|
geetest3ID := ""
|
|
if cfg.Geetest3ID != nil {
|
|
geetest3ID = *cfg.Geetest3ID
|
|
}
|
|
geetest3Key := ""
|
|
if cfg.Geetest3Key != nil {
|
|
geetest3Key = *cfg.Geetest3Key
|
|
}
|
|
geetest4ID := ""
|
|
if cfg.Geetest4ID != nil {
|
|
geetest4ID = *cfg.Geetest4ID
|
|
}
|
|
geetest4Key := ""
|
|
if cfg.Geetest4Key != nil {
|
|
geetest4Key = *cfg.Geetest4Key
|
|
}
|
|
|
|
settings := []struct {
|
|
code string
|
|
name string
|
|
value string
|
|
remark string
|
|
}{
|
|
{"login_verify_enabled", "登录验证开启状态", openVerifyEnabledStr, "0为关闭,1为开启"},
|
|
{"login_verify_type", "登录验证类型", cfg.VerifyType, "支持 captcha/sms/geetest/email"},
|
|
{"login_verify_geetest3_id", "极验3 ID", geetest3ID, ""},
|
|
{"login_verify_geetest3_key", "极验3 Key", geetest3Key, ""},
|
|
{"login_verify_geetest4_id", "极验4 ID", geetest4ID, ""},
|
|
{"login_verify_geetest4_key", "极验4 Key", geetest4Key, ""},
|
|
}
|
|
|
|
for _, item := range settings {
|
|
var setting PlatformNormalSetting
|
|
err := Orm.QueryTable(new(PlatformNormalSetting)).
|
|
Filter("code", item.code).
|
|
Filter("delete_time__isnull", true).
|
|
One(&setting)
|
|
if err == nil {
|
|
setting.Value = item.value
|
|
setting.Name = item.name
|
|
setting.Remark = item.remark
|
|
now := time.Now()
|
|
setting.UpdateTime = &now
|
|
_, err = Orm.Update(&setting, "Value", "Name", "Remark", "UpdateTime")
|
|
if err != nil {
|
|
return err
|
|
}
|
|
} else {
|
|
newSetting := PlatformNormalSetting{
|
|
Name: item.name,
|
|
Code: item.code,
|
|
Value: item.value,
|
|
Remark: item.remark,
|
|
CreateTime: time.Now(),
|
|
}
|
|
_, err = Orm.Insert(&newSetting)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
}
|
|
}
|
|
return nil
|
|
}
|
|
|