133 lines
4.0 KiB
Go
133 lines
4.0 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
|
||
}
|
||
|