diff --git a/object/user.go b/object/user.go index 45f6bab5..2b4fab3b 100644 --- a/object/user.go +++ b/object/user.go @@ -510,6 +510,8 @@ func GetUserByPhone(owner string, phone string) (*User, error) { return nil, nil } + phone = util.GetSeperatedPhone(phone) + user := User{Owner: owner, Phone: phone} existed, err := ormer.Engine.Get(&user) if err != nil { @@ -528,6 +530,8 @@ func GetUserByPhoneOnly(phone string) (*User, error) { return nil, nil } + phone = util.GetSeperatedPhone(phone) + user := User{Phone: phone} existed, err := ormer.Engine.Get(&user) if err != nil { diff --git a/object/user_util.go b/object/user_util.go index 1b7f3bed..a33df0b4 100644 --- a/object/user_util.go +++ b/object/user_util.go @@ -80,7 +80,8 @@ func GetUserByFields(organization string, field string) (*User, error) { } // check phone - user, err = GetUserByField(organization, "phone", field) + phone := util.GetSeperatedPhone(field) + user, err = GetUserByField(organization, "phone", phone) if user != nil || err != nil { return user, err } diff --git a/util/string.go b/util/string.go index 9894cf0d..8cdab598 100644 --- a/util/string.go +++ b/util/string.go @@ -30,6 +30,7 @@ import ( "unicode" "github.com/google/uuid" + "github.com/nyaruka/phonenumbers" ) func ParseInt(s string) int { @@ -278,6 +279,19 @@ func GetMaskedPhone(phone string) string { return rePhone.ReplaceAllString(phone, "$1****$2") } +func GetSeperatedPhone(phone string) string { + if strings.HasPrefix(phone, "+") { + phoneNumberParsed, err := phonenumbers.Parse(phone, "") + if err != nil { + return phone + } + + phone = fmt.Sprintf("%d", phoneNumberParsed.GetNationalNumber()) + } + + return phone +} + func GetMaskedEmail(email string) string { if email == "" { return ""