Initial commit: Open sourcing all of the Maple Open Technologies code.
This commit is contained in:
commit
755d54a99d
2010 changed files with 448675 additions and 0 deletions
57
native/desktop/maplefile/internal/utils/email.go
Normal file
57
native/desktop/maplefile/internal/utils/email.go
Normal file
|
|
@ -0,0 +1,57 @@
|
|||
package utils
|
||||
|
||||
import "strings"
|
||||
|
||||
// MaskEmail masks an email address for logging purposes.
|
||||
// Example: "user@example.com" becomes "u***@e***.com"
|
||||
// This preserves enough information for debugging while protecting privacy.
|
||||
func MaskEmail(email string) string {
|
||||
if email == "" {
|
||||
return ""
|
||||
}
|
||||
|
||||
parts := strings.Split(email, "@")
|
||||
if len(parts) != 2 {
|
||||
// Not a valid email format, mask most of it
|
||||
if len(email) <= 2 {
|
||||
return "***"
|
||||
}
|
||||
return string(email[0]) + "***"
|
||||
}
|
||||
|
||||
localPart := parts[0]
|
||||
domainPart := parts[1]
|
||||
|
||||
// Mask local part: show first character, mask the rest
|
||||
maskedLocal := maskPart(localPart)
|
||||
|
||||
// Mask domain: show first character of domain name, mask rest, keep TLD
|
||||
maskedDomain := maskDomain(domainPart)
|
||||
|
||||
return maskedLocal + "@" + maskedDomain
|
||||
}
|
||||
|
||||
// maskPart masks a string showing only the first character
|
||||
func maskPart(s string) string {
|
||||
if len(s) == 0 {
|
||||
return "***"
|
||||
}
|
||||
if len(s) == 1 {
|
||||
return s + "***"
|
||||
}
|
||||
return string(s[0]) + "***"
|
||||
}
|
||||
|
||||
// maskDomain masks the domain part, preserving the TLD
|
||||
func maskDomain(domain string) string {
|
||||
lastDot := strings.LastIndex(domain, ".")
|
||||
if lastDot == -1 {
|
||||
// No TLD found, just mask it
|
||||
return maskPart(domain)
|
||||
}
|
||||
|
||||
domainName := domain[:lastDot]
|
||||
tld := domain[lastDot:] // includes the dot
|
||||
|
||||
return maskPart(domainName) + tld
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue