feat: 迁移渠道列表新增和游戏累计分布
This commit is contained in:
@@ -13,12 +13,26 @@ import (
|
||||
type Passwords struct{ AuthCode, MigrateAuthCode, TablePrefix string }
|
||||
|
||||
func NewPasswords() business.PlatformPasswordVerifier {
|
||||
return loadPasswords()
|
||||
}
|
||||
func NewPasswordEncoder() business.PlatformPasswordEncoder {
|
||||
return loadPasswords()
|
||||
}
|
||||
func loadPasswords() *Passwords {
|
||||
prefix := os.Getenv("SW_SDK_TABLE_PREFIX")
|
||||
if prefix == "" {
|
||||
prefix = "sys_"
|
||||
}
|
||||
return &Passwords{AuthCode: os.Getenv("SW_SDK_AUTH_CODE"), MigrateAuthCode: os.Getenv("SW_SDK_MIGRATE_AUTH_CODE"), TablePrefix: prefix}
|
||||
}
|
||||
|
||||
// Encode 保留源平台 cmfPassword 的存储格式,新增渠道不能改用 Kra 账号密码格式。
|
||||
func (p *Passwords) Encode(password string) (string, error) {
|
||||
if p.AuthCode == "" {
|
||||
return "", business.ErrPlatformPasswordConfig
|
||||
}
|
||||
return "###" + md5Hex(md5Hex(p.AuthCode+password)), nil
|
||||
}
|
||||
func md5Hex(value string) string { sum := md5.Sum([]byte(value)); return hex.EncodeToString(sum[:]) }
|
||||
|
||||
func (p *Passwords) Verify(password, stored string) (bool, error) {
|
||||
|
||||
@@ -17,3 +17,14 @@ func TestLegacyPasswordFormats(t *testing.T) {
|
||||
t.Fatal("缺少兼容盐时必须明确报错")
|
||||
}
|
||||
}
|
||||
|
||||
func TestNewChannelPasswordMatchesLegacyFixedVector(t *testing.T) {
|
||||
passwords := &Passwords{AuthCode: "test-auth"}
|
||||
hash, err := passwords.Encode("demo123")
|
||||
if err != nil || hash != "###eef6d9b7160f32a869f3e03b7ea575a5" {
|
||||
t.Fatal("新渠道密码与旧平台格式不兼容")
|
||||
}
|
||||
if _, err := (&Passwords{}).Encode("demo123"); err == nil {
|
||||
t.Fatal("缺少盐不能写入不可登录的渠道密码")
|
||||
}
|
||||
}
|
||||
|
||||
@@ -24,6 +24,7 @@ import (
|
||||
|
||||
var ProviderSet = wire.NewSet(
|
||||
gameplatform.NewPasswords,
|
||||
gameplatform.NewPasswordEncoder,
|
||||
gameplatform.NewPasswordSMS,
|
||||
cache.New,
|
||||
email.NewEmailRepo,
|
||||
|
||||
Reference in New Issue
Block a user