Merge remote-tracking branch 'refs/remotes/origin/wip-account-creation' into wip-account-creation
This commit is contained in:
		
						commit
						c556e88916
					
				
							
								
								
									
										157
									
								
								cmd/main.go
									
									
									
									
									
								
							
							
						
						
									
										157
									
								
								cmd/main.go
									
									
									
									
									
								
							@ -1,6 +1,7 @@
 | 
			
		||||
package main
 | 
			
		||||
 | 
			
		||||
import (
 | 
			
		||||
	"bytes"
 | 
			
		||||
	"context"
 | 
			
		||||
	"encoding/json"
 | 
			
		||||
	"flag"
 | 
			
		||||
@ -13,6 +14,7 @@ import (
 | 
			
		||||
 | 
			
		||||
	"git.defalsify.org/vise.git/cache"
 | 
			
		||||
	"git.defalsify.org/vise.git/engine"
 | 
			
		||||
	"git.defalsify.org/vise.git/lang"
 | 
			
		||||
	"git.defalsify.org/vise.git/persist"
 | 
			
		||||
	"git.defalsify.org/vise.git/resource"
 | 
			
		||||
	"git.defalsify.org/vise.git/state"
 | 
			
		||||
@ -28,6 +30,11 @@ const (
 | 
			
		||||
	USERFLAG_INVALID_RECIPIENT_WITH_INVITE
 | 
			
		||||
	USERFLAG_INCORRECTPIN
 | 
			
		||||
	USERFLAG_UNLOCKFORUPDATE
 | 
			
		||||
	USERFLAG_INVALID_AMOUNT
 | 
			
		||||
	USERFLAG_QUERYPIN
 | 
			
		||||
	USERFLAG_VALIDPIN
 | 
			
		||||
	USERFLAG_INVALIDPIN
 | 
			
		||||
	USERFLAG_UNLOCKFORUPDATE
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
const (
 | 
			
		||||
@ -71,6 +78,16 @@ type fsData struct {
 | 
			
		||||
	st   *state.State
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func codeFromCtx(ctx context.Context) string {
 | 
			
		||||
	var code string
 | 
			
		||||
	engine.Logg.DebugCtxf(ctx, "in msg", "ctx", ctx, "val", code)
 | 
			
		||||
	if ctx.Value("Language") != nil {
 | 
			
		||||
		lang := ctx.Value("Language").(lang.Language)
 | 
			
		||||
		code = lang.Code
 | 
			
		||||
	}
 | 
			
		||||
	return code
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (fsd *fsData) saveFirstName(cxt context.Context, sym string, input []byte) (resource.Result, error) {
 | 
			
		||||
	res := resource.Result{}
 | 
			
		||||
	fp := fsd.path + "_data"
 | 
			
		||||
@ -484,8 +501,12 @@ func checkAccountStatus(trackingId string) (string, error) {
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (fsd *fsData) quit(ctx context.Context, sym string, input []byte) (resource.Result, error) {
 | 
			
		||||
	res := resource.Result{
 | 
			
		||||
		Content: "Your account is being created",
 | 
			
		||||
	res := resource.Result{}
 | 
			
		||||
	switch codeFromCtx(ctx) {
 | 
			
		||||
	case "swa":
 | 
			
		||||
		res.Content = "Asante kwa kutumia huduma ya Sarafu. Kwaheri!"
 | 
			
		||||
	default:
 | 
			
		||||
		res.Content = "Thank you for using Sarafu. Goodbye!"
 | 
			
		||||
	}
 | 
			
		||||
	res.FlagReset = append(res.FlagReset, USERFLAG_ACCOUNT_UNLOCKED)
 | 
			
		||||
	return res, nil
 | 
			
		||||
@ -606,6 +627,39 @@ func (fsd *fsData) transaction_reset(ctx context.Context, sym string, input []by
 | 
			
		||||
	return res, nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (fsd *fsData) reset_transaction_amount(ctx context.Context, sym string, input []byte) (resource.Result, error) {
 | 
			
		||||
	res := resource.Result{}
 | 
			
		||||
	fp := fsd.path + "_data"
 | 
			
		||||
 | 
			
		||||
	jsonData, err := os.ReadFile(fp)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return res, err
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	var accountData map[string]string
 | 
			
		||||
	err = json.Unmarshal(jsonData, &accountData)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return res, err
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	// reset the amount
 | 
			
		||||
	accountData["Amount"] = ""
 | 
			
		||||
 | 
			
		||||
	updatedJsonData, err := json.Marshal(accountData)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return res, err
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	err = os.WriteFile(fp, updatedJsonData, 0644)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return res, err
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	res.FlagReset = append(res.FlagReset, USERFLAG_INVALID_AMOUNT)
 | 
			
		||||
 | 
			
		||||
	return res, nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (fsd *fsData) max_amount(ctx context.Context, sym string, input []byte) (resource.Result, error) {
 | 
			
		||||
	res := resource.Result{}
 | 
			
		||||
 | 
			
		||||
@ -632,28 +686,32 @@ func (fsd *fsData) validate_amount(ctx context.Context, sym string, input []byte
 | 
			
		||||
		return res, err
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	// mimic invalid amount check
 | 
			
		||||
	if amount == "0" {
 | 
			
		||||
		// res.FlagSet = []uint32{invalidAmount}
 | 
			
		||||
	if amount != "0" {
 | 
			
		||||
		// mimic invalid amount
 | 
			
		||||
		if amount == "00" {
 | 
			
		||||
			res.FlagSet = append(res.FlagSet, USERFLAG_INVALID_AMOUNT)
 | 
			
		||||
			res.Content = amount
 | 
			
		||||
 | 
			
		||||
			return res, nil
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		res.Content = amount
 | 
			
		||||
 | 
			
		||||
		accountData["Amount"] = amount
 | 
			
		||||
 | 
			
		||||
		updatedJsonData, err := json.Marshal(accountData)
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			return res, err
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		err = os.WriteFile(fp, updatedJsonData, 0644)
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			return res, err
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		return res, nil
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	res.Content = amount
 | 
			
		||||
 | 
			
		||||
	accountData["Amount"] = amount
 | 
			
		||||
 | 
			
		||||
	updatedJsonData, err := json.Marshal(accountData)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return res, err
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	err = os.WriteFile(fp, updatedJsonData, 0644)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return res, err
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	return res, nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -762,6 +820,62 @@ func (fsd *fsData) quitWithBalance(ctx context.Context, sym string, input []byte
 | 
			
		||||
	return res, nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (fsd *fsData) save_pin(ctx context.Context, sym string, input []byte) (resource.Result, error) {
 | 
			
		||||
	res := resource.Result{}
 | 
			
		||||
	accountPIN := string(input)
 | 
			
		||||
	fp := fsd.path + "_data"
 | 
			
		||||
 | 
			
		||||
	jsonData, err := os.ReadFile(fp)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return res, err
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	var accountData map[string]string
 | 
			
		||||
	err = json.Unmarshal(jsonData, &accountData)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return res, err
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	accountData["AccountPIN"] = accountPIN
 | 
			
		||||
 | 
			
		||||
	updatedJsonData, err := json.Marshal(accountData)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return res, err
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	err = os.WriteFile(fp, updatedJsonData, 0644)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return res, err
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	return res, nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (fsd *fsData) verify_pin(ctx context.Context, sym string, input []byte) (resource.Result, error) {
 | 
			
		||||
	res := resource.Result{}
 | 
			
		||||
	fp := fsd.path + "_data"
 | 
			
		||||
 | 
			
		||||
	jsonData, err := os.ReadFile(fp)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return res, err
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	var accountData map[string]string
 | 
			
		||||
	err = json.Unmarshal(jsonData, &accountData)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return res, err
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if bytes.Equal(input, []byte(accountData["AccountPIN"])) {
 | 
			
		||||
		res.FlagSet = []uint32{USERFLAG_VALIDPIN}
 | 
			
		||||
		res.FlagReset = []uint32{USERFLAG_INVALIDPIN}
 | 
			
		||||
	} else {
 | 
			
		||||
		res.FlagSet = []uint32{USERFLAG_INVALIDPIN}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	return res, nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
var (
 | 
			
		||||
	scriptDir = path.Join("services", "registration")
 | 
			
		||||
)
 | 
			
		||||
@ -779,7 +893,7 @@ func main() {
 | 
			
		||||
	fmt.Fprintf(os.Stderr, "starting session at symbol '%s' using resource dir: %s\n", root, dir)
 | 
			
		||||
 | 
			
		||||
	ctx := context.Background()
 | 
			
		||||
	st := state.NewState(9)
 | 
			
		||||
	st := state.NewState(15)
 | 
			
		||||
	st.UseDebug()
 | 
			
		||||
	state.FlagDebugger.Register(USERFLAG_LANGUAGE_SET, "LANGUAGE_CHANGE")
 | 
			
		||||
	state.FlagDebugger.Register(USERFLAG_ACCOUNT_CREATED, "ACCOUNT_CREATED")
 | 
			
		||||
@ -823,6 +937,8 @@ func main() {
 | 
			
		||||
	}
 | 
			
		||||
	rfs.AddLocalFunc("select_language", fs.SetLanguageSelected)
 | 
			
		||||
	rfs.AddLocalFunc("create_account", fs.create_account)
 | 
			
		||||
	rfs.AddLocalFunc("save_pin", fs.save_pin)
 | 
			
		||||
	rfs.AddLocalFunc("verify_pin", fs.verify_pin)
 | 
			
		||||
	rfs.AddLocalFunc("check_identifier", fs.checkIdentifier)
 | 
			
		||||
	rfs.AddLocalFunc("check_account_status", fs.check_account_status)
 | 
			
		||||
	rfs.AddLocalFunc("unlock_account", fs.unLock)
 | 
			
		||||
@ -832,6 +948,7 @@ func main() {
 | 
			
		||||
	rfs.AddLocalFunc("transaction_reset", fs.transaction_reset)
 | 
			
		||||
	rfs.AddLocalFunc("max_amount", fs.max_amount)
 | 
			
		||||
	rfs.AddLocalFunc("validate_amount", fs.validate_amount)
 | 
			
		||||
	rfs.AddLocalFunc("reset_transaction_amount", fs.reset_transaction_amount)
 | 
			
		||||
	rfs.AddLocalFunc("get_recipient", fs.get_recipient)
 | 
			
		||||
	rfs.AddLocalFunc("get_sender", fs.get_sender)
 | 
			
		||||
	rfs.AddLocalFunc("reset_incorrect", fs.ResetIncorrectPin)
 | 
			
		||||
 | 
			
		||||
@ -1,4 +1,4 @@
 | 
			
		||||
LOAD create_account 0
 | 
			
		||||
RELOAD verify_pin
 | 
			
		||||
CATCH create_pin_mismatch 20 1
 | 
			
		||||
LOAD quit 0
 | 
			
		||||
HALT
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -1,3 +1,4 @@
 | 
			
		||||
LOAD reset_transaction_amount 0
 | 
			
		||||
RELOAD validate_recipient
 | 
			
		||||
CATCH invalid_recipient 13 1
 | 
			
		||||
LOAD max_amount 10
 | 
			
		||||
 | 
			
		||||
@ -0,0 +1,2 @@
 | 
			
		||||
Kiwango cha juu: {{.max_amount}}
 | 
			
		||||
Weka kiwango:
 | 
			
		||||
							
								
								
									
										1
									
								
								services/registration/confirm_create_pin
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								services/registration/confirm_create_pin
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1 @@
 | 
			
		||||
Enter your four number PIN again:
 | 
			
		||||
							
								
								
									
										4
									
								
								services/registration/confirm_create_pin.vis
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										4
									
								
								services/registration/confirm_create_pin.vis
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,4 @@
 | 
			
		||||
LOAD save_pin 0
 | 
			
		||||
HALT
 | 
			
		||||
LOAD verify_pin 8
 | 
			
		||||
INCMP account_creation *
 | 
			
		||||
							
								
								
									
										1
									
								
								services/registration/confirm_create_pin_swa
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								services/registration/confirm_create_pin_swa
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1 @@
 | 
			
		||||
Weka PIN yako tena:
 | 
			
		||||
							
								
								
									
										1
									
								
								services/registration/create_pin
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								services/registration/create_pin
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1 @@
 | 
			
		||||
Please enter a new four number PIN for your account:
 | 
			
		||||
							
								
								
									
										5
									
								
								services/registration/create_pin.vis
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										5
									
								
								services/registration/create_pin.vis
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,5 @@
 | 
			
		||||
LOAD create_account 0
 | 
			
		||||
MOUT exit 0
 | 
			
		||||
HALT
 | 
			
		||||
LOAD save_pin 0
 | 
			
		||||
INCMP confirm_create_pin *
 | 
			
		||||
							
								
								
									
										1
									
								
								services/registration/create_pin_mismatch
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								services/registration/create_pin_mismatch
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1 @@
 | 
			
		||||
The PIN is not a match. Try again
 | 
			
		||||
							
								
								
									
										5
									
								
								services/registration/create_pin_mismatch.vis
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										5
									
								
								services/registration/create_pin_mismatch.vis
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,5 @@
 | 
			
		||||
MOUT retry 1
 | 
			
		||||
MOUT quit 9
 | 
			
		||||
HALT
 | 
			
		||||
INCMP confirm_create_pin 1
 | 
			
		||||
INCMP quit 9
 | 
			
		||||
							
								
								
									
										1
									
								
								services/registration/create_pin_mismatch_swa
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								services/registration/create_pin_mismatch_swa
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1 @@
 | 
			
		||||
PIN uliyoweka haifanani. Jaribu tena
 | 
			
		||||
							
								
								
									
										1
									
								
								services/registration/create_pin_swa
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								services/registration/create_pin_swa
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1 @@
 | 
			
		||||
Tafadhali weka PIN mpya yenye nambari nne kwa akaunti yako:
 | 
			
		||||
							
								
								
									
										1
									
								
								services/registration/exit_menu
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								services/registration/exit_menu
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1 @@
 | 
			
		||||
Exit
 | 
			
		||||
							
								
								
									
										1
									
								
								services/registration/exit_menu_swa
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								services/registration/exit_menu_swa
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1 @@
 | 
			
		||||
Ondoka
 | 
			
		||||
							
								
								
									
										1
									
								
								services/registration/invalid_amount
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								services/registration/invalid_amount
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1 @@
 | 
			
		||||
Amount {{.validate_amount}} is invalid, please try again:
 | 
			
		||||
							
								
								
									
										7
									
								
								services/registration/invalid_amount.vis
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										7
									
								
								services/registration/invalid_amount.vis
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,7 @@
 | 
			
		||||
MAP validate_amount
 | 
			
		||||
RELOAD reset_transaction_amount
 | 
			
		||||
MOUT retry 1
 | 
			
		||||
MOUT quit 9
 | 
			
		||||
HALT
 | 
			
		||||
INCMP amount 1
 | 
			
		||||
INCMP quit 9
 | 
			
		||||
							
								
								
									
										1
									
								
								services/registration/invalid_amount_swa
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								services/registration/invalid_amount_swa
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1 @@
 | 
			
		||||
Kiwango {{.validate_amount}} sio sahihi, tafadhali weka tena:
 | 
			
		||||
@ -3,5 +3,5 @@ RELOAD select_language
 | 
			
		||||
MOUT yes 0
 | 
			
		||||
MOUT no 1
 | 
			
		||||
HALT
 | 
			
		||||
INCMP account_creation 0
 | 
			
		||||
INCMP create_pin 0
 | 
			
		||||
INCMP _ *
 | 
			
		||||
 | 
			
		||||
@ -1,5 +1,6 @@
 | 
			
		||||
RELOAD validate_amount
 | 
			
		||||
MAP validate_amount
 | 
			
		||||
CATCH invalid_amount 17 1
 | 
			
		||||
RELOAD get_recipient
 | 
			
		||||
MAP get_recipient
 | 
			
		||||
RELOAD get_sender
 | 
			
		||||
 | 
			
		||||
		Loading…
	
		Reference in New Issue
	
	Block a user