Bootstrap copied BFF and local accounts with public Sendico contracts (#34)

This commit is contained in:
Stephan D committed 2026-09-12 13:37:48 +02:00
1 parent 67dc5b5b1e
commit 7062672a87
556 files changed
+42291 -777

No files matched your search

@@ -0,0 +1,78 @@
package merrors
import (
"errors"
"strings"
)
const (
SignupEmailPolicyCode = "signup_email_rejected"
SignupEmailPolicyReasonInvalidEmail = "invalid_email"
SignupEmailPolicyReasonDisposableDomain = "disposable_domain"
SignupEmailPolicyReasonFreeDomain = "free_domain"
)
var ErrSignupEmailPolicyRejected = Define(SignupEmailPolicyCode)
type SignupEmailPolicyError struct {
reason string
domain string
}
func NormalizeSignupEmailPolicyReason(reason string) string {
switch strings.TrimSpace(reason) {
case SignupEmailPolicyReasonInvalidEmail:
return SignupEmailPolicyReasonInvalidEmail
case SignupEmailPolicyReasonDisposableDomain:
return SignupEmailPolicyReasonDisposableDomain
case SignupEmailPolicyReasonFreeDomain:
return SignupEmailPolicyReasonFreeDomain
default:
return SignupEmailPolicyReasonInvalidEmail
}
}
func IsSignupEmailPolicyReason(reason string) bool {
return strings.TrimSpace(reason) == NormalizeSignupEmailPolicyReason(reason)
}
func (e *SignupEmailPolicyError) Error() string {
if e == nil || e.reason == "" {
return SignupEmailPolicyCode
}
return SignupEmailPolicyCode + ": " + e.reason
}
func (e *SignupEmailPolicyError) Unwrap() error {
return ErrSignupEmailPolicyRejected
}
func (e *SignupEmailPolicyError) Reason() string {
if e == nil {
return ""
}
return strings.TrimSpace(e.reason)
}
func (e *SignupEmailPolicyError) Domain() string {
if e == nil {
return ""
}
return strings.TrimSpace(e.domain)
}
func SignupEmailPolicyRejected(reason, domain string) error {
return &SignupEmailPolicyError{
reason: NormalizeSignupEmailPolicyReason(reason),
domain: strings.TrimSpace(domain),
}
}
func AsSignupEmailPolicyError(err error) (*SignupEmailPolicyError, bool) {
var policyErr *SignupEmailPolicyError
if errors.As(err, &policyErr) && policyErr != nil {
return policyErr, true
}
return nil, false
}