Smail/backend/utils/validation/sender.go
smail f60d3b0880
Some checks are pending
Security Checks / security (push) Waiting to run
整理前后端与测试构建目录并完善配置和安全引导
统一 frontend、backend、test、test-log 和 out 目录,更新构建、部署及测试入口;纳入配置管理兼容与首次安全引导修复;排除本机配置、密钥和测试产物。
2026-09-05 19:19:52 +08:00

38 lines
832 B
Go

package validation
import (
"net/mail"
"strings"
)
func IsAuthorizedSender(address, account string, isAdmin bool, domains []string) bool {
address = strings.TrimSpace(address)
parsed, err := mail.ParseAddress(address)
if err != nil || parsed.Address != address {
return false
}
at := strings.LastIndexByte(address, '@')
if at <= 0 || at == len(address)-1 || strings.Contains(address[:at], "@") {
return false
}
domain, err := NormalizeDomain(address[at+1:])
if err != nil {
return false
}
configured := false
for _, candidate := range domains {
normalized, normalizeErr := NormalizeDomain(candidate)
if normalizeErr == nil && domain == normalized {
configured = true
break
}
}
if !configured {
return false
}
return isAdmin || strings.EqualFold(address[:at], strings.TrimSpace(account))
}