data_mask/execute.go

69 lines
1.6 KiB
Go
Raw Normal View History

2023-05-23 14:32:26 +08:00
// Package data_mask ...
//
// Description : data_mask ...
//
// Author : go_developer@163.com<白茶清欢>
//
// Date : 2023-05-23 14:25
package data_mask
2024-04-07 22:37:14 +08:00
import (
"errors"
"git.zhangdeman.cn/zhangdeman/data_mask/strategy"
)
2024-04-07 21:35:55 +08:00
2023-05-23 14:32:26 +08:00
var (
maskInstanceTable = make(map[string]IDataMask)
defaultDataMask = &DefaultDataMask{}
)
func init() {
2023-05-24 14:51:45 +08:00
maskInstanceList := []IDataMask{
2024-04-07 21:35:55 +08:00
&strategy.MailDataMask{}, // 邮箱脱敏
&strategy.PhoneDataMask{}, // 手机号脱敏
2023-05-24 14:51:45 +08:00
}
2023-05-23 14:32:26 +08:00
for _, item := range maskInstanceList {
maskInstanceTable[item.Type()] = item
}
}
// RegisterStrategy 注册数据脱敏策略
//
// Author : go_developer@163.com<白茶清欢>
//
// Date : 22:18 2024/4/7
func RegisterStrategy(dataMaskStrategy ...IDataMask) {
for _, item := range dataMaskStrategy {
maskInstanceTable[item.Type()] = item
}
}
2023-05-23 14:32:26 +08:00
// Execute 执行数据脱敏
//
// Author : go_developer@163.com<白茶清欢>
//
// Date : 14:31 2023/5/23
func Execute(data string, maskType string) string {
dataMaskInstance, exist := maskInstanceTable[maskType]
if !exist || nil == dataMaskInstance {
dataMaskInstance = defaultDataMask
}
return dataMaskInstance.Mask(data)
}
2024-04-07 22:37:14 +08:00
// ExecuteWithError 严格执行
//
// Author : go_developer@163.com<白茶清欢>
//
// Date : 22:33 2024/4/7
func ExecuteWithError(data string, maskType string) (string, error) {
dataMaskInstance, exist := maskInstanceTable[maskType]
if !exist {
return "", errors.New(maskType + " : data mask type is not found")
}
if nil == dataMaskInstance {
return "", errors.New(maskType + " : data mask type instance is nil")
}
return Execute(data, maskType), nil
}