fix: canonicalize phone numbers as E.164
This commit is contained in:
@@ -3,6 +3,29 @@
|
||||
|
||||
package mysql
|
||||
|
||||
import (
|
||||
"strings"
|
||||
|
||||
"github.com/nyaruka/phonenumbers"
|
||||
t "github.com/tinode/chat/server/store/types"
|
||||
)
|
||||
|
||||
func normalizeUserPhone(value string) (string, error) {
|
||||
value = strings.TrimSpace(strings.TrimPrefix(strings.TrimPrefix(value, "tel:"), "basic:"))
|
||||
if value == "" {
|
||||
return "", t.ErrMalformed
|
||||
}
|
||||
number, err := phonenumbers.Parse(value, "CN")
|
||||
if err != nil || !phonenumbers.IsValidNumber(number) {
|
||||
return "", t.ErrMalformed
|
||||
}
|
||||
numberType := phonenumbers.GetNumberType(number)
|
||||
if numberType != phonenumbers.MOBILE && numberType != phonenumbers.FIXED_LINE_OR_MOBILE {
|
||||
return "", t.ErrMalformed
|
||||
}
|
||||
return phonenumbers.Format(number, phonenumbers.E164), nil
|
||||
}
|
||||
|
||||
func withoutUserTags(update map[string]any) map[string]any {
|
||||
if update == nil {
|
||||
return nil
|
||||
|
||||
Reference in New Issue
Block a user