Compare commits
No commits in common. "efaf0ab22eea979f5b94dbee503517fcec29d0b8" and "6aa4bd89062c83216180e284c607a20619dd644b" have entirely different histories.
efaf0ab22e
...
6aa4bd8906
@ -1,11 +1,9 @@
|
|||||||
package config
|
package config
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"strings"
|
|
||||||
|
|
||||||
apiconfig "git.grassecon.net/grassrootseconomics/sarafu-api/config"
|
|
||||||
viseconfig "git.grassecon.net/grassrootseconomics/visedriver/config"
|
|
||||||
"git.grassecon.net/grassrootseconomics/visedriver/env"
|
"git.grassecon.net/grassrootseconomics/visedriver/env"
|
||||||
|
viseconfig "git.grassecon.net/grassrootseconomics/visedriver/config"
|
||||||
|
apiconfig "git.grassecon.net/grassrootseconomics/sarafu-api/config"
|
||||||
)
|
)
|
||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
@ -13,13 +11,13 @@ func init() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
const (
|
const (
|
||||||
defaultSSHHost string = "127.0.0.1"
|
defaultSSHHost string = "127.0.0.1"
|
||||||
defaultSSHPort uint = 7122
|
defaultSSHPort uint = 7122
|
||||||
defaultHTTPHost string = "127.0.0.1"
|
defaultHTTPHost string = "127.0.0.1"
|
||||||
defaultHTTPPort uint = 7123
|
defaultHTTPPort uint = 7123
|
||||||
defaultDomain = "sarafu.local"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
func LoadConfig() error {
|
func LoadConfig() error {
|
||||||
err := viseconfig.LoadConfig()
|
err := viseconfig.LoadConfig()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@ -32,16 +30,6 @@ func LoadConfig() error {
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func SearchDomains() []string {
|
|
||||||
var ParsedDomains []string
|
|
||||||
SearchDomains := env.GetEnv("ALIAS_SEARCH_DOMAINS", defaultDomain)
|
|
||||||
SearchDomainList := strings.Split(env.GetEnv("ALIAS_SEARCH_DOMAINS", SearchDomains), ",")
|
|
||||||
for _, domain := range SearchDomainList {
|
|
||||||
ParsedDomains = append(ParsedDomains, strings.ReplaceAll(domain, " ", ""))
|
|
||||||
}
|
|
||||||
return ParsedDomains
|
|
||||||
}
|
|
||||||
|
|
||||||
func DbConn() string {
|
func DbConn() string {
|
||||||
return viseconfig.DbConn
|
return viseconfig.DbConn
|
||||||
}
|
}
|
||||||
|
@ -18,20 +18,17 @@ import (
|
|||||||
"git.defalsify.org/vise.git/persist"
|
"git.defalsify.org/vise.git/persist"
|
||||||
"git.defalsify.org/vise.git/resource"
|
"git.defalsify.org/vise.git/resource"
|
||||||
"git.defalsify.org/vise.git/state"
|
"git.defalsify.org/vise.git/state"
|
||||||
"git.grassecon.net/grassrootseconomics/common/hex"
|
dataserviceapi "github.com/grassrootseconomics/ussd-data-service/pkg/api"
|
||||||
"git.grassecon.net/grassrootseconomics/common/identity"
|
|
||||||
commonlang "git.grassecon.net/grassrootseconomics/common/lang"
|
|
||||||
"git.grassecon.net/grassrootseconomics/common/person"
|
|
||||||
"git.grassecon.net/grassrootseconomics/common/phone"
|
|
||||||
"git.grassecon.net/grassrootseconomics/common/pin"
|
|
||||||
"git.grassecon.net/grassrootseconomics/sarafu-api/dev"
|
|
||||||
"git.grassecon.net/grassrootseconomics/sarafu-api/models"
|
|
||||||
"git.grassecon.net/grassrootseconomics/sarafu-api/remote"
|
|
||||||
"git.grassecon.net/grassrootseconomics/sarafu-vise/config"
|
|
||||||
"git.grassecon.net/grassrootseconomics/sarafu-vise/profile"
|
"git.grassecon.net/grassrootseconomics/sarafu-vise/profile"
|
||||||
"git.grassecon.net/grassrootseconomics/sarafu-vise/store"
|
"git.grassecon.net/grassrootseconomics/sarafu-vise/store"
|
||||||
storedb "git.grassecon.net/grassrootseconomics/sarafu-vise/store/db"
|
storedb "git.grassecon.net/grassrootseconomics/sarafu-vise/store/db"
|
||||||
dataserviceapi "github.com/grassrootseconomics/ussd-data-service/pkg/api"
|
"git.grassecon.net/grassrootseconomics/sarafu-api/remote"
|
||||||
|
"git.grassecon.net/grassrootseconomics/common/hex"
|
||||||
|
commonlang "git.grassecon.net/grassrootseconomics/common/lang"
|
||||||
|
"git.grassecon.net/grassrootseconomics/common/pin"
|
||||||
|
"git.grassecon.net/grassrootseconomics/common/person"
|
||||||
|
"git.grassecon.net/grassrootseconomics/common/phone"
|
||||||
|
"git.grassecon.net/grassrootseconomics/common/identity"
|
||||||
)
|
)
|
||||||
|
|
||||||
var (
|
var (
|
||||||
@ -102,7 +99,7 @@ func NewMenuHandlers(appFlags *asm.FlagParser, userdataStore db.Db, adminstore *
|
|||||||
}
|
}
|
||||||
|
|
||||||
// WithPersister sets persister instance to the handlers.
|
// WithPersister sets persister instance to the handlers.
|
||||||
// func (h *MenuHandlers) WithPersister(pe *persist.Persister) *MenuHandlers {
|
//func (h *MenuHandlers) WithPersister(pe *persist.Persister) *MenuHandlers {
|
||||||
func (h *MenuHandlers) SetPersister(pe *persist.Persister) {
|
func (h *MenuHandlers) SetPersister(pe *persist.Persister) {
|
||||||
if h.pe != nil {
|
if h.pe != nil {
|
||||||
panic("persister already set")
|
panic("persister already set")
|
||||||
@ -111,6 +108,7 @@ func (h *MenuHandlers) SetPersister(pe *persist.Persister) {
|
|||||||
//return h
|
//return h
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// Init initializes the handler for a new session.
|
// Init initializes the handler for a new session.
|
||||||
func (h *MenuHandlers) Init(ctx context.Context, sym string, input []byte) (resource.Result, error) {
|
func (h *MenuHandlers) Init(ctx context.Context, sym string, input []byte) (resource.Result, error) {
|
||||||
var r resource.Result
|
var r resource.Result
|
||||||
@ -467,10 +465,6 @@ func (h *MenuHandlers) SaveFirstname(ctx context.Context, sym string, input []by
|
|||||||
logg.ErrorCtxf(ctx, "failed to write firstName entry with", "key", storedb.DATA_FIRST_NAME, "value", temporaryFirstName, "error", err)
|
logg.ErrorCtxf(ctx, "failed to write firstName entry with", "key", storedb.DATA_FIRST_NAME, "value", temporaryFirstName, "error", err)
|
||||||
return res, err
|
return res, err
|
||||||
}
|
}
|
||||||
err := h.constructAccountAlias(ctx)
|
|
||||||
if err != nil {
|
|
||||||
return res, err
|
|
||||||
}
|
|
||||||
res.FlagSet = append(res.FlagSet, flag_firstname_set)
|
res.FlagSet = append(res.FlagSet, flag_firstname_set)
|
||||||
} else {
|
} else {
|
||||||
if firstNameSet {
|
if firstNameSet {
|
||||||
@ -1086,16 +1080,16 @@ func (h *MenuHandlers) ValidateBlockedNumber(ctx context.Context, sym string, in
|
|||||||
// TODO: split up functino
|
// TODO: split up functino
|
||||||
func (h *MenuHandlers) ValidateRecipient(ctx context.Context, sym string, input []byte) (resource.Result, error) {
|
func (h *MenuHandlers) ValidateRecipient(ctx context.Context, sym string, input []byte) (resource.Result, error) {
|
||||||
var res resource.Result
|
var res resource.Result
|
||||||
var AliasAddressResult string
|
|
||||||
var AliasAddress *models.AliasAddress
|
|
||||||
store := h.userdataStore
|
store := h.userdataStore
|
||||||
|
|
||||||
sessionId, ok := ctx.Value("SessionId").(string)
|
sessionId, ok := ctx.Value("SessionId").(string)
|
||||||
if !ok {
|
if !ok {
|
||||||
return res, fmt.Errorf("missing session")
|
return res, fmt.Errorf("missing session")
|
||||||
}
|
}
|
||||||
|
|
||||||
flag_invalid_recipient, _ := h.flagManager.GetFlag("flag_invalid_recipient")
|
flag_invalid_recipient, _ := h.flagManager.GetFlag("flag_invalid_recipient")
|
||||||
flag_invalid_recipient_with_invite, _ := h.flagManager.GetFlag("flag_invalid_recipient_with_invite")
|
flag_invalid_recipient_with_invite, _ := h.flagManager.GetFlag("flag_invalid_recipient_with_invite")
|
||||||
|
flag_api_error, _ := h.flagManager.GetFlag("flag_api_call_error")
|
||||||
|
|
||||||
recipient := string(input)
|
recipient := string(input)
|
||||||
|
|
||||||
@ -1155,32 +1149,21 @@ func (h *MenuHandlers) ValidateRecipient(ctx context.Context, sym string, input
|
|||||||
}
|
}
|
||||||
|
|
||||||
case "alias":
|
case "alias":
|
||||||
if strings.Contains(recipient, ".") {
|
// Call the API to validate and retrieve the address for the alias
|
||||||
AliasAddress, err = h.accountService.CheckAliasAddress(ctx, recipient)
|
r, aliasErr := h.accountService.CheckAliasAddress(ctx, recipient)
|
||||||
if err == nil {
|
if aliasErr != nil {
|
||||||
AliasAddressResult = AliasAddress.Address
|
res.FlagSet = append(res.FlagSet, flag_api_error)
|
||||||
}
|
|
||||||
} else {
|
|
||||||
//Perform a search for each search domain,break on first match
|
|
||||||
for _, domain := range config.SearchDomains() {
|
|
||||||
fqdn := fmt.Sprintf("%s.%s", recipient, domain)
|
|
||||||
AliasAddress, err = h.accountService.CheckAliasAddress(ctx, fqdn)
|
|
||||||
if err == nil {
|
|
||||||
AliasAddressResult = AliasAddress.Address
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if AliasAddressResult == "" {
|
|
||||||
res.Content = recipient
|
res.Content = recipient
|
||||||
res.FlagSet = append(res.FlagSet, flag_invalid_recipient)
|
|
||||||
return res, nil
|
logg.ErrorCtxf(ctx, "failed on CheckAliasAddress", "error", aliasErr)
|
||||||
} else {
|
return res, err
|
||||||
err = store.WriteEntry(ctx, sessionId, storedb.DATA_RECIPIENT, []byte(AliasAddressResult))
|
}
|
||||||
if err != nil {
|
|
||||||
logg.ErrorCtxf(ctx, "failed to write recipient entry with", "key", storedb.DATA_RECIPIENT, "value", AliasAddressResult, "error", err)
|
// Alias validation succeeded, save the Ethereum address
|
||||||
return res, err
|
err = store.WriteEntry(ctx, sessionId, storedb.DATA_RECIPIENT, []byte(r.Address))
|
||||||
}
|
if err != nil {
|
||||||
|
logg.ErrorCtxf(ctx, "failed to write recipient entry with", "key", storedb.DATA_RECIPIENT, "value", r.Address, "error", err)
|
||||||
|
return res, err
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1906,6 +1889,7 @@ func (h *MenuHandlers) GetVoucherDetails(ctx context.Context, sym string, input
|
|||||||
if !ok {
|
if !ok {
|
||||||
return res, fmt.Errorf("missing session")
|
return res, fmt.Errorf("missing session")
|
||||||
}
|
}
|
||||||
|
|
||||||
flag_api_error, _ := h.flagManager.GetFlag("flag_api_call_error")
|
flag_api_error, _ := h.flagManager.GetFlag("flag_api_call_error")
|
||||||
|
|
||||||
// get the active address
|
// get the active address
|
||||||
@ -2150,10 +2134,6 @@ func (h *MenuHandlers) UpdateAllProfileItems(ctx context.Context, sym string, in
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return res, err
|
return res, err
|
||||||
}
|
}
|
||||||
err = h.constructAccountAlias(ctx)
|
|
||||||
if err != nil {
|
|
||||||
return res, err
|
|
||||||
}
|
|
||||||
return res, nil
|
return res, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2238,42 +2218,3 @@ func (h *MenuHandlers) persistLanguageCode(ctx context.Context, code string) err
|
|||||||
}
|
}
|
||||||
return h.persistInitialLanguageCode(ctx, sessionId, code)
|
return h.persistInitialLanguageCode(ctx, sessionId, code)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (h *MenuHandlers) constructAccountAlias(ctx context.Context) error {
|
|
||||||
var alias string
|
|
||||||
store := h.userdataStore
|
|
||||||
sessionId, ok := ctx.Value("SessionId").(string)
|
|
||||||
if !ok {
|
|
||||||
return fmt.Errorf("missing session")
|
|
||||||
}
|
|
||||||
firstName, err := store.ReadEntry(ctx, sessionId, storedb.DATA_FIRST_NAME)
|
|
||||||
if err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
familyName, err := store.ReadEntry(ctx, sessionId, storedb.DATA_FAMILY_NAME)
|
|
||||||
if err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
pubKey, err := store.ReadEntry(ctx, sessionId, storedb.DATA_PUBLIC_KEY)
|
|
||||||
if err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
aliasInput := fmt.Sprintf("%s%s", firstName, familyName)
|
|
||||||
aliasResult, err := h.accountService.RequestAlias(ctx, string(pubKey), aliasInput)
|
|
||||||
if err != nil {
|
|
||||||
return fmt.Errorf("Failed to retrieve alias: %s", err.Error())
|
|
||||||
}
|
|
||||||
if _, ok := h.accountService.(*dev.DevAccountService); ok {
|
|
||||||
//If using local dev api,append sarafu.local to the assigned available alias
|
|
||||||
alias = aliasResult.Alias + ".sarafu.local"
|
|
||||||
} else {
|
|
||||||
alias = aliasResult.Alias + ".sarafu.eth"
|
|
||||||
}
|
|
||||||
//Store the alias
|
|
||||||
err = store.WriteEntry(ctx, sessionId, storedb.DATA_ACCOUNT_ALIAS, []byte(alias))
|
|
||||||
if err != nil {
|
|
||||||
logg.ErrorCtxf(ctx, "failed to write account alias", "key", storedb.DATA_ACCOUNT_ALIAS, "value", alias, "error", err)
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
@ -61,8 +61,6 @@ const (
|
|||||||
DATA_SELECTED_LANGUAGE_CODE
|
DATA_SELECTED_LANGUAGE_CODE
|
||||||
//ISO 639 code for the language initially selected.
|
//ISO 639 code for the language initially selected.
|
||||||
DATA_INITIAL_LANGUAGE_CODE
|
DATA_INITIAL_LANGUAGE_CODE
|
||||||
//Fully qualified account alias string
|
|
||||||
DATA_ACCOUNT_ALIAS
|
|
||||||
)
|
)
|
||||||
|
|
||||||
const (
|
const (
|
||||||
|
Loading…
Reference in New Issue
Block a user