This commit is contained in:
@@ -26,7 +26,19 @@ func NewGetRegisterConfigLogic(ctx context.Context, svcCtx *svc.ServiceContext)
|
||||
}
|
||||
|
||||
func (l *GetRegisterConfigLogic) GetRegisterConfig() (*types.RegisterConfig, error) {
|
||||
resp := &types.RegisterConfig{}
|
||||
resp := &types.RegisterConfig{
|
||||
StopRegister: l.svcCtx.Config.Register.StopRegister,
|
||||
EnableTrial: l.svcCtx.Config.Register.EnableTrial,
|
||||
EnableTrialEmailWhitelist: l.svcCtx.Config.Register.EnableTrialEmailWhitelist,
|
||||
TrialSubscribe: l.svcCtx.Config.Register.TrialSubscribe,
|
||||
TrialTime: l.svcCtx.Config.Register.TrialTime,
|
||||
TrialTimeUnit: l.svcCtx.Config.Register.TrialTimeUnit,
|
||||
TrialEmailDomainWhitelist: l.svcCtx.Config.Register.TrialEmailDomainWhitelist,
|
||||
EnableIpRegisterLimit: l.svcCtx.Config.Register.EnableIpRegisterLimit,
|
||||
IpRegisterLimit: l.svcCtx.Config.Register.IpRegisterLimit,
|
||||
IpRegisterLimitDuration: l.svcCtx.Config.Register.IpRegisterLimitDuration,
|
||||
DeviceLimit: l.svcCtx.Config.Register.DeviceLimit,
|
||||
}
|
||||
|
||||
// get register config from database
|
||||
configs, err := l.svcCtx.SystemModel.GetRegisterConfig(l.ctx)
|
||||
|
||||
@@ -4,6 +4,7 @@ import (
|
||||
"context"
|
||||
|
||||
"reflect"
|
||||
"strings"
|
||||
|
||||
"github.com/perfect-panel/server/initialize"
|
||||
"github.com/perfect-panel/server/internal/config"
|
||||
@@ -44,8 +45,28 @@ func (l *UpdateRegisterConfigLogic) UpdateRegisterConfig(req *types.RegisterConf
|
||||
fieldName := t.Field(i).Name
|
||||
// Get the field value to string
|
||||
fieldValue := tool.ConvertValueToString(v.Field(i))
|
||||
// Update the site config
|
||||
err = db.Model(&system.System{}).Where("`category` = 'register' and `key` = ?", fieldName).Update("value", fieldValue).Error
|
||||
|
||||
var existing system.System
|
||||
queryErr := db.Where("`category` = ? and `key` = ?", "register", fieldName).First(&existing).Error
|
||||
if queryErr != nil && !errors.Is(queryErr, gorm.ErrRecordNotFound) {
|
||||
return queryErr
|
||||
}
|
||||
if errors.Is(queryErr, gorm.ErrRecordNotFound) {
|
||||
fieldValue = l.defaultRegisterFieldValue(fieldName, fieldValue)
|
||||
}
|
||||
|
||||
record := &system.System{
|
||||
Category: "register",
|
||||
Key: fieldName,
|
||||
}
|
||||
assignments := map[string]interface{}{
|
||||
"value": fieldValue,
|
||||
"type": inferRegisterSystemValueType(t.Field(i).Type.Kind()),
|
||||
"desc": fieldName,
|
||||
}
|
||||
err = db.Where("`category` = ? and `key` = ?", "register", fieldName).
|
||||
Assign(assignments).
|
||||
FirstOrCreate(record).Error
|
||||
if err != nil {
|
||||
break
|
||||
}
|
||||
@@ -63,3 +84,28 @@ func (l *UpdateRegisterConfigLogic) UpdateRegisterConfig(req *types.RegisterConf
|
||||
initialize.Register(l.svcCtx)
|
||||
return nil
|
||||
}
|
||||
|
||||
func inferRegisterSystemValueType(kind reflect.Kind) string {
|
||||
switch kind {
|
||||
case reflect.Bool:
|
||||
return "bool"
|
||||
case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64:
|
||||
return "int"
|
||||
default:
|
||||
return "string"
|
||||
}
|
||||
}
|
||||
|
||||
func (l *UpdateRegisterConfigLogic) defaultRegisterFieldValue(fieldName, fieldValue string) string {
|
||||
switch fieldName {
|
||||
case "EnableTrialEmailWhitelist":
|
||||
return "true"
|
||||
case "TrialEmailDomainWhitelist":
|
||||
if strings.TrimSpace(fieldValue) != "" {
|
||||
return fieldValue
|
||||
}
|
||||
return l.svcCtx.Config.Register.TrialEmailDomainWhitelist
|
||||
default:
|
||||
return fieldValue
|
||||
}
|
||||
}
|
||||
|
||||
+11
-9
@@ -2267,15 +2267,17 @@ type RedemptionRecord struct {
|
||||
}
|
||||
|
||||
type RegisterConfig struct {
|
||||
StopRegister bool `json:"stop_register"`
|
||||
EnableTrial bool `json:"enable_trial"`
|
||||
TrialSubscribe int64 `json:"trial_subscribe"`
|
||||
TrialTime int64 `json:"trial_time"`
|
||||
TrialTimeUnit string `json:"trial_time_unit"`
|
||||
EnableIpRegisterLimit bool `json:"enable_ip_register_limit"`
|
||||
IpRegisterLimit int64 `json:"ip_register_limit"`
|
||||
IpRegisterLimitDuration int64 `json:"ip_register_limit_duration"`
|
||||
DeviceLimit int64 `json:"device_limit"`
|
||||
StopRegister bool `json:"stop_register"`
|
||||
EnableTrial bool `json:"enable_trial"`
|
||||
EnableTrialEmailWhitelist bool `json:"enable_trial_email_whitelist"`
|
||||
TrialSubscribe int64 `json:"trial_subscribe"`
|
||||
TrialTime int64 `json:"trial_time"`
|
||||
TrialTimeUnit string `json:"trial_time_unit"`
|
||||
TrialEmailDomainWhitelist string `json:"trial_email_domain_whitelist"`
|
||||
EnableIpRegisterLimit bool `json:"enable_ip_register_limit"`
|
||||
IpRegisterLimit int64 `json:"ip_register_limit"`
|
||||
IpRegisterLimitDuration int64 `json:"ip_register_limit_duration"`
|
||||
DeviceLimit int64 `json:"device_limit"`
|
||||
}
|
||||
|
||||
type RegisterLog struct {
|
||||
|
||||
Reference in New Issue
Block a user