mirror of
https://github.com/Rain-kl/OpenFlare.git
synced 2026-09-29 22:06:38 +08:00
9f8890d159
- Declared module Wavelet in backend/go.mod - Replaced github.com/Rain-kl/Wavelet/ with clean Wavelet/ import paths across backend codebase - Updated architecture guards, Makefile, swagger, and build tests - 100% passed all tests, lint checks, and binary compilation
35 lines
800 B
Go
35 lines
800 B
Go
// Copyright 2026 Arctel.net
|
||
// SPDX-License-Identifier: Apache-2.0
|
||
|
||
package util
|
||
|
||
import "strings"
|
||
|
||
// emailPartsCount 邮箱地址由 @ 分割为两部分
|
||
const (
|
||
emailPartsCount = 2
|
||
emailLocalMinChars = 2 // 邮箱 local 部分掩码显示的最小字符数
|
||
)
|
||
|
||
// DerefString 安全地解引用字符串指针,nil 返回空字符串
|
||
func DerefString(s *string) string {
|
||
if s == nil {
|
||
return ""
|
||
}
|
||
return *s
|
||
}
|
||
|
||
// MaskEmail 安全脱敏用户的邮箱地址(例如 us***@example.com)
|
||
func MaskEmail(email string) string {
|
||
parts := strings.Split(email, "@")
|
||
if len(parts) != emailPartsCount {
|
||
return email
|
||
}
|
||
local := parts[0]
|
||
domain := parts[1]
|
||
if len(local) <= emailLocalMinChars {
|
||
return "**@" + domain
|
||
}
|
||
return local[:2] + "***" + local[len(local)-1:] + "@" + domain
|
||
}
|