2022-04-12 14:20:17 +00:00
|
|
|
package command
|
|
|
|
|
|
|
|
import (
|
|
|
|
"context"
|
|
|
|
"time"
|
|
|
|
|
|
|
|
"github.com/ttacon/libphonenumber"
|
2022-04-26 23:01:45 +00:00
|
|
|
"github.com/zitadel/zitadel/internal/command/preparation"
|
|
|
|
"github.com/zitadel/zitadel/internal/crypto"
|
|
|
|
"github.com/zitadel/zitadel/internal/domain"
|
|
|
|
"github.com/zitadel/zitadel/internal/errors"
|
2022-04-12 14:20:17 +00:00
|
|
|
)
|
|
|
|
|
|
|
|
type Phone struct {
|
|
|
|
Number string
|
|
|
|
Verified bool
|
|
|
|
}
|
|
|
|
|
|
|
|
func FormatPhoneNumber(number string) (string, error) {
|
|
|
|
if number == "" {
|
|
|
|
return "", nil
|
|
|
|
}
|
|
|
|
phoneNr, err := libphonenumber.Parse(number, libphonenumber.UNKNOWN_REGION)
|
|
|
|
if err != nil {
|
|
|
|
return "", errors.ThrowInvalidArgument(nil, "EVENT-so0wa", "Errors.User.Phone.Invalid")
|
|
|
|
}
|
|
|
|
number = libphonenumber.Format(phoneNr, libphonenumber.E164)
|
|
|
|
return number, nil
|
|
|
|
}
|
|
|
|
|
|
|
|
func newPhoneCode(ctx context.Context, filter preparation.FilterToQueryReducer, alg crypto.EncryptionAlgorithm) (value *crypto.CryptoValue, expiry time.Duration, err error) {
|
|
|
|
return newCryptoCodeWithExpiry(ctx, filter, domain.SecretGeneratorTypeVerifyPhoneCode, alg)
|
|
|
|
}
|