refactor: 简化 trial 赠送配置,删除多余的白名单启用开关
All checks were successful
Build docker and publish / build (20.15.1) (push) Successful in 7m42s
All checks were successful
Build docker and publish / build (20.15.1) (push) Successful in 7m42s
**简化方案**: - 删除 `EnableTrialEmailWhitelist` 配置字段(多余) - 保留 `TrialEmailDomainWhitelist`(逗号分隔的白名单域名) - 赠送规则:白名单**非空** 且 **邮箱在列表** 才赠送 **新的赠送逻辑**: ```yaml TrialEmailDomainWhitelist: "qq.com,163.com,gmail.com" ``` - 为空 → ❌ 不赠送(关闭) - 非空 → ✅ 赠送给白名单域名的邮箱 **更新的地方**: 1. internal/config/config.go - 删除 EnableTrialEmailWhitelist 字段 2. userRegisterLogic.go - 简化赠送逻辑 3. emailLoginLogic.go - 简化赠送逻辑 4. bindEmailWithVerificationLogic.go - 简化赠送逻辑 5. oAuthLoginGetTokenLogic.go - 简化赠送逻辑 **配置升级说明**: 旧配置: ```yaml EnableTrial: true EnableTrialEmailWhitelist: true TrialEmailDomainWhitelist: "qq.com,163.com" ``` 新配置(只保留两项): ```yaml EnableTrial: true TrialEmailDomainWhitelist: "qq.com,163.com" ``` 关闭赠送: ```yaml EnableTrial: true TrialEmailDomainWhitelist: "" ``` Co-Authored-By: claude-flow <ruv@ruv.net>
This commit is contained in:
parent
19777df2ed
commit
98d8525fa9
@ -87,12 +87,11 @@ type RegisterConfig struct {
|
||||
TrialSubscribe int64 `yaml:"TrialSubscribe" default:"0"`
|
||||
TrialTime int64 `yaml:"TrialTime" default:"0"`
|
||||
TrialTimeUnit string `yaml:"TrialTimeUnit" default:""`
|
||||
TrialEmailDomainWhitelist string `yaml:"TrialEmailDomainWhitelist" default:""`
|
||||
IpRegisterLimit int64 `yaml:"IpRegisterLimit" default:"0"`
|
||||
IpRegisterLimitDuration int64 `yaml:"IpRegisterLimitDuration" default:"0"`
|
||||
EnableIpRegisterLimit bool `yaml:"EnableIpRegisterLimit" default:"false"`
|
||||
DeviceLimit int64 `yaml:"DeviceLimit" default:"2"`
|
||||
EnableTrialEmailWhitelist bool `yaml:"EnableTrialEmailWhitelist" default:"false"`
|
||||
TrialEmailDomainWhitelist string `yaml:"TrialEmailDomainWhitelist" default:""`
|
||||
}
|
||||
|
||||
type EmailConfig struct {
|
||||
|
||||
@ -126,7 +126,7 @@ func (l *EmailLoginLogic) EmailLogin(req *types.EmailLoginRequest) (resp *types.
|
||||
return err
|
||||
}
|
||||
rc := l.svcCtx.Config.Register
|
||||
if rc.EnableTrial && (!rc.EnableTrialEmailWhitelist || IsEmailDomainWhitelisted(req.Email, rc.TrialEmailDomainWhitelist)) {
|
||||
if rc.EnableTrial && rc.TrialEmailDomainWhitelist != "" && IsEmailDomainWhitelisted(req.Email, rc.TrialEmailDomainWhitelist) {
|
||||
if err = l.activeTrial(userInfo.Id); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
@ -395,8 +395,8 @@ func (l *OAuthLoginGetTokenLogic) register(email, avatar, method, openid, reques
|
||||
}
|
||||
|
||||
rc := l.svcCtx.Config.Register
|
||||
// Only activate trial if whitelist is not enabled, or email domain matches whitelist
|
||||
shouldActivateTrial := rc.EnableTrial && (!rc.EnableTrialEmailWhitelist || (email != "" && l.isEmailDomainWhitelisted(email, rc.TrialEmailDomainWhitelist)))
|
||||
// Only activate trial if email domain is in whitelist (whitelist cannot be empty)
|
||||
shouldActivateTrial := rc.EnableTrial && rc.TrialEmailDomainWhitelist != "" && (email != "" && l.isEmailDomainWhitelisted(email, rc.TrialEmailDomainWhitelist))
|
||||
|
||||
if shouldActivateTrial {
|
||||
l.Debugw("activating trial subscription",
|
||||
|
||||
@ -148,7 +148,7 @@ func (l *UserRegisterLogic) UserRegister(req *types.UserRegisterRequest) (resp *
|
||||
|
||||
// Activate trial subscription after transaction success (moved outside transaction to reduce lock time)
|
||||
rc := l.svcCtx.Config.Register
|
||||
if rc.EnableTrial && (!rc.EnableTrialEmailWhitelist || IsEmailDomainWhitelisted(req.Email, rc.TrialEmailDomainWhitelist)) {
|
||||
if rc.EnableTrial && rc.TrialEmailDomainWhitelist != "" && IsEmailDomainWhitelisted(req.Email, rc.TrialEmailDomainWhitelist) {
|
||||
trialSubscribe, err = l.activeTrial(userInfo.Id)
|
||||
if err != nil {
|
||||
l.Errorw("Failed to activate trial subscription", logger.Field("error", err.Error()))
|
||||
|
||||
@ -209,13 +209,13 @@ func (l *BindEmailWithVerificationLogic) refreshBindSessionToken(userId int64) (
|
||||
}
|
||||
|
||||
// tryGrantTrialOnEmailBind grants trial subscription to the email user (family owner)
|
||||
// if EnableTrial is on and (if whitelist is enabled, email domain must match).
|
||||
// if email domain is in the configured whitelist (or if whitelist is empty, no trial is granted).
|
||||
func (l *BindEmailWithVerificationLogic) tryGrantTrialOnEmailBind(ownerUserId int64, email string) {
|
||||
rc := l.svcCtx.Config.Register
|
||||
if !rc.EnableTrial {
|
||||
if !rc.EnableTrial || rc.TrialEmailDomainWhitelist == "" {
|
||||
return
|
||||
}
|
||||
if rc.EnableTrialEmailWhitelist && !auth.IsEmailDomainWhitelisted(email, rc.TrialEmailDomainWhitelist) {
|
||||
if !auth.IsEmailDomainWhitelisted(email, rc.TrialEmailDomainWhitelist) {
|
||||
l.Infow("email domain not in trial whitelist, skip",
|
||||
logger.Field("email", email),
|
||||
logger.Field("owner_user_id", ownerUserId),
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user