wip-account-creation #4
62
cmd/main.go
62
cmd/main.go
@ -1,6 +1,7 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"context"
|
||||
"encoding/json"
|
||||
"flag"
|
||||
@ -29,6 +30,9 @@ const (
|
||||
USERFLAG_INCORRECTPIN
|
||||
USERFLAG_UNLOCKFORUPDATE
|
||||
USERFLAG_INVALID_AMOUNT
|
||||
USERFLAG_QUERYPIN
|
||||
USERFLAG_VALIDPIN
|
||||
USERFLAG_INVALIDPIN
|
||||
)
|
||||
|
||||
Alfred-mk marked this conversation as resolved
Outdated
|
||||
const (
|
||||
@ -551,6 +555,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")
|
||||
)
|
||||
@ -612,6 +672,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)
|
||||
|
@ -1,4 +1,4 @@
|
||||
LOAD create_account 0
|
||||
RELOAD verify_pin
|
||||
CATCH create_pin_mismatch 20 1
|
||||
LOAD quit 0
|
||||
HALT
|
||||
|
||||
|
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
|
||||
Alfred-mk marked this conversation as resolved
Outdated
lash
commented
This is not caught This is not caught
lash
commented
priority **priority**
|
||||
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
|
||||
Alfred-mk marked this conversation as resolved
lash
commented
if quit is chosen, next time the vm is started, the pin creation is never resumed, it just goes directly to main menu. It should prompt for setting pin again. if quit is chosen, next time the vm is started, the pin creation is never resumed, it just goes directly to main menu. It should prompt for setting pin again.
|
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
|
@ -3,5 +3,5 @@ RELOAD select_language
|
||||
MOUT yes 0
|
||||
MOUT no 1
|
||||
HALT
|
||||
INCMP account_creation 0
|
||||
INCMP create_pin 0
|
||||
INCMP _ *
|
||||
|
Loading…
Reference in New Issue
Block a user
please rename this flag to USERFLAG_PINMISMATCH to avoid ambiguity.
priority