forked from urdt/ussd
create a PIN during registration
This commit is contained in:
parent
9aedc5d48f
commit
f50be01b89
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
|
||||
)
|
||||
|
||||
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
|
||||
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
|
@ -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