Compare commits
2 Commits
267132b956
...
b919bfbfc8
| Author | SHA1 | Date | |
|---|---|---|---|
| b919bfbfc8 | |||
| f666b1e960 |
@ -20,6 +20,7 @@ import (
|
|||||||
"git.defalsify.org/vise.git/logging"
|
"git.defalsify.org/vise.git/logging"
|
||||||
"git.defalsify.org/vise.git/resource"
|
"git.defalsify.org/vise.git/resource"
|
||||||
|
|
||||||
|
"git.grassecon.net/urdt/ussd/common"
|
||||||
"git.grassecon.net/urdt/ussd/config"
|
"git.grassecon.net/urdt/ussd/config"
|
||||||
"git.grassecon.net/urdt/ussd/initializers"
|
"git.grassecon.net/urdt/ussd/initializers"
|
||||||
"git.grassecon.net/urdt/ussd/internal/handlers"
|
"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 "", 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) {
|
func (arp *atRequestParser) GetInput(rq any) ([]byte, error) {
|
||||||
|
|||||||
@ -3,6 +3,7 @@ package common
|
|||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
"regexp"
|
"regexp"
|
||||||
|
"strings"
|
||||||
)
|
)
|
||||||
|
|
||||||
// Define the regex patterns as constants
|
// 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")
|
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) {
|
||||||
|
// 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
|
||||||
|
}
|
||||||
@ -927,8 +927,15 @@ func (h *Handlers) ValidateRecipient(ctx context.Context, sym string, input []by
|
|||||||
|
|
||||||
switch recipientType {
|
switch recipientType {
|
||||||
case "phone number":
|
case "phone number":
|
||||||
|
// format the phone number
|
||||||
|
formattedNumber, err := common.FormatPhoneNumber(recipient)
|
||||||
|
if err != nil {
|
||||||
|
logg.ErrorCtxf(ctx, "Failed to format the phone number: %s", recipient, "error", err)
|
||||||
|
return res, err
|
||||||
|
}
|
||||||
|
|
||||||
// Check if the phone number is registered
|
// Check if the phone number is registered
|
||||||
publicKey, err := store.ReadEntry(ctx, recipient, common.DATA_PUBLIC_KEY)
|
publicKey, err := store.ReadEntry(ctx, formattedNumber, common.DATA_PUBLIC_KEY)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
if db.IsNotFound(err) {
|
if db.IsNotFound(err) {
|
||||||
logg.InfoCtxf(ctx, "Unregistered phone number: %s", recipient)
|
logg.InfoCtxf(ctx, "Unregistered phone number: %s", recipient)
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user