Validate aliases, addresses and phone numbers in the send menu #176

Merged
kamikazechaser merged 14 commits from alias-address-validation into master 2024-11-26 07:24:57 +01:00
2 changed files with 23 additions and 1 deletions
Showing only changes of commit f666b1e960 - Show all commits

View File

@ -20,6 +20,7 @@ import (
"git.defalsify.org/vise.git/logging"
"git.defalsify.org/vise.git/resource"
"git.grassecon.net/urdt/ussd/common"
"git.grassecon.net/urdt/ussd/config"
"git.grassecon.net/urdt/ussd/initializers"
"git.grassecon.net/urdt/ussd/internal/handlers"
@ -76,7 +77,13 @@ func (arp *atRequestParser) GetSessionId(rq any) (string, error) {
return "", fmt.Errorf("no phone number found")
}
return phoneNumber, nil
formattedNumber, err := common.FormatPhoneNumber(phoneNumber)
if err != nil {
fmt.Printf("Error: %v\n", err)
return "", fmt.Errorf("failed to format number")
}
return formattedNumber, nil
}
func (arp *atRequestParser) GetInput(rq any) ([]byte, error) {

View File

@ -3,6 +3,7 @@ package common
import (
"fmt"
"regexp"
"strings"
)
// Define the regex patterns as constants
@ -46,3 +47,17 @@ func CheckRecipient(recipient string) (string, error) {
return "", fmt.Errorf("invalid recipient: must be a phone number, address or alias")
}
// FormatPhoneNumber formats a Kenyan phone number to "254xxxxxxxx".
func FormatPhoneNumber(phone string) (string, error) {
kamikazechaser marked this conversation as resolved Outdated

It should be + prefixed. Why? That is how we save it in our common db (graph) and also how most, if not all, API providers expect the phone number.

It should be + prefixed. Why? That is how we save it in our common db (graph) and also how most, if not all, API providers expect the phone number.

Thanks, this has been updated

Thanks, this has been updated
// Remove any leading "+" and spaces
phone = strings.TrimPrefix(phone, "+")
phone = strings.ReplaceAll(phone, " ", "")
// Replace leading "0" with "254" if present
if strings.HasPrefix(phone, "0") {
phone = "254" + phone[1:]
}
return phone, nil
}