[refactor] email verification method

This commit is contained in:
Alireza Ahmadi 2024-10-10 17:32:50 +02:00
parent f1f5d323e8
commit 4b1c76e972

View file

@ -2,9 +2,7 @@ package service
import ( import (
"encoding/json" "encoding/json"
"errors"
"fmt" "fmt"
"regexp"
"strconv" "strconv"
"strings" "strings"
"time" "time"
@ -101,8 +99,9 @@ func (s *InboundService) getAllEmails() ([]string, error) {
} }
func (s *InboundService) contains(slice []string, str string) bool { func (s *InboundService) contains(slice []string, str string) bool {
lowerStr := strings.ToLower(str)
for _, s := range slice { for _, s := range slice {
if s == str { if strings.ToLower(s) == lowerStr {
return true return true
} }
} }
@ -414,12 +413,6 @@ func (s *InboundService) AddInboundClient(data *model.Inbound) (bool, error) {
return false, err return false, err
} }
email := clients[0].Email
valid, err := validateEmail(email)
if !valid {
return false, err
}
var settings map[string]interface{} var settings map[string]interface{}
err = json.Unmarshal([]byte(data.Settings), &settings) err = json.Unmarshal([]byte(data.Settings), &settings)
if err != nil { if err != nil {
@ -610,12 +603,6 @@ func (s *InboundService) UpdateInboundClient(data *model.Inbound, clientId strin
return false, err return false, err
} }
email := clients[0].Email
valid, err := validateEmail(email)
if !valid {
return false, err
}
var settings map[string]interface{} var settings map[string]interface{}
err = json.Unmarshal([]byte(data.Settings), &settings) err = json.Unmarshal([]byte(data.Settings), &settings)
if err != nil { if err != nil {
@ -2022,26 +2009,3 @@ func (s *InboundService) MigrateDB() {
func (s *InboundService) GetOnlineClients() []string { func (s *InboundService) GetOnlineClients() []string {
return p.GetOnlineClients() return p.GetOnlineClients()
} }
func validateEmail(email string) (bool, error) {
if strings.Contains(email, " ") {
return false, errors.New("email contains spaces, please remove them")
}
if email != strings.ToLower(email) {
return false, errors.New("email contains uppercase letters, please convert to lowercase")
}
nonEnglishPattern := `[^\x00-\x7F]`
if regexp.MustCompile(nonEnglishPattern).MatchString(email) {
return false, errors.New("email contains non-English characters, please use only English")
}
emailPattern := `^[a-z0-9@._-]+$`
if !regexp.MustCompile(emailPattern).MatchString(email) {
return false, errors.New("email contains invalid characters, please use only lowercase letters, digits, and @._-")
}
return true, nil
}