forked from urdt/ussd
Merge pull request 'Pin reset' (#59) from wip-pin-reset into master
Reviewed-on: urdt/ussd#59 Reviewed-by: lash <accounts-grassrootseconomics@holbrook.no>
This commit is contained in:
commit
e323ffa078
@ -71,6 +71,9 @@ func getHandler(appFlags *asm.FlagParser, rs *resource.DbResource, pe *persist.P
|
||||
rs.AddLocalFunc("reset_incorrect_date_format", ussdHandlers.ResetIncorrectYob)
|
||||
rs.AddLocalFunc("set_reset_single_edit", ussdHandlers.SetResetSingleEdit)
|
||||
rs.AddLocalFunc("initiate_transaction", ussdHandlers.InitiateTransaction)
|
||||
rs.AddLocalFunc("save_temporary_pin", ussdHandlers.SaveTemporaryPin)
|
||||
rs.AddLocalFunc("verify_new_pin", ussdHandlers.VerifyNewPin)
|
||||
rs.AddLocalFunc("confirm_pin_change", ussdHandlers.ConfirmPinChange)
|
||||
|
||||
return ussdHandlers, nil
|
||||
}
|
||||
|
@ -216,6 +216,74 @@ func (h *Handlers) SavePin(ctx context.Context, sym string, input []byte) (resou
|
||||
return res, nil
|
||||
}
|
||||
|
||||
func (h *Handlers) VerifyNewPin(ctx context.Context, sym string, input []byte) (resource.Result, error) {
|
||||
res := resource.Result{}
|
||||
_, ok := ctx.Value("SessionId").(string)
|
||||
if !ok {
|
||||
return res, fmt.Errorf("missing session")
|
||||
}
|
||||
flag_valid_pin, _ := h.flagManager.GetFlag("flag_valid_pin")
|
||||
pinInput := string(input)
|
||||
// Validate that the PIN is a 4-digit number
|
||||
if isValidPIN(pinInput) {
|
||||
res.FlagSet = append(res.FlagSet, flag_valid_pin)
|
||||
} else {
|
||||
res.FlagReset = append(res.FlagReset, flag_valid_pin)
|
||||
}
|
||||
|
||||
return res, nil
|
||||
}
|
||||
|
||||
func (h *Handlers) SaveTemporaryPin(ctx context.Context, sym string, input []byte) (resource.Result, error) {
|
||||
var res resource.Result
|
||||
var err error
|
||||
|
||||
sessionId, ok := ctx.Value("SessionId").(string)
|
||||
if !ok {
|
||||
return res, fmt.Errorf("missing session")
|
||||
}
|
||||
flag_incorrect_pin, _ := h.flagManager.GetFlag("flag_incorrect_pin")
|
||||
|
||||
accountPIN := string(input)
|
||||
|
||||
// Validate that the PIN is a 4-digit number
|
||||
if !isValidPIN(accountPIN) {
|
||||
res.FlagSet = append(res.FlagSet, flag_incorrect_pin)
|
||||
return res, nil
|
||||
}
|
||||
store := h.userdataStore
|
||||
err = store.WriteEntry(ctx, sessionId, utils.DATA_TEMPORARY_PIN, []byte(accountPIN))
|
||||
if err != nil {
|
||||
return res, err
|
||||
}
|
||||
return res, nil
|
||||
}
|
||||
|
||||
func (h *Handlers) ConfirmPinChange(ctx context.Context, sym string, input []byte) (resource.Result, error) {
|
||||
var res resource.Result
|
||||
sessionId, ok := ctx.Value("SessionId").(string)
|
||||
if !ok {
|
||||
return res, fmt.Errorf("missing session")
|
||||
}
|
||||
flag_pin_mismatch, _ := h.flagManager.GetFlag("flag_pin_mismatch")
|
||||
|
||||
store := h.userdataStore
|
||||
temporaryPin, err := store.ReadEntry(ctx, sessionId, utils.DATA_TEMPORARY_PIN)
|
||||
if err != nil {
|
||||
return res, err
|
||||
}
|
||||
if bytes.Equal(temporaryPin, input) {
|
||||
res.FlagReset = append(res.FlagReset, flag_pin_mismatch)
|
||||
} else {
|
||||
res.FlagSet = append(res.FlagSet, flag_pin_mismatch)
|
||||
}
|
||||
err = store.WriteEntry(ctx, sessionId, utils.DATA_ACCOUNT_PIN, []byte(temporaryPin))
|
||||
if err != nil {
|
||||
return res, err
|
||||
}
|
||||
return res, nil
|
||||
}
|
||||
|
||||
// SetResetSingleEdit sets and resets flags to allow gradual editing of profile information.
|
||||
func (h *Handlers) SetResetSingleEdit(ctx context.Context, sym string, input []byte) (resource.Result, error) {
|
||||
var res resource.Result
|
||||
@ -322,9 +390,6 @@ func (h *Handlers) SaveFamilyname(ctx context.Context, sym string, input []byte)
|
||||
if err != nil {
|
||||
return res, err
|
||||
}
|
||||
if err != nil {
|
||||
return res, nil
|
||||
}
|
||||
} else {
|
||||
return res, fmt.Errorf("a family name cannot be less than one character")
|
||||
}
|
||||
@ -481,8 +546,6 @@ func (h *Handlers) Authorize(ctx context.Context, sym string, input []byte) (res
|
||||
if err != nil {
|
||||
return res, err
|
||||
}
|
||||
|
||||
if err == nil {
|
||||
if len(input) == 4 {
|
||||
if bytes.Equal(input, AccountPin) {
|
||||
if h.st.MatchFlag(flag_account_authorized, false) {
|
||||
@ -497,11 +560,9 @@ func (h *Handlers) Authorize(ctx context.Context, sym string, input []byte) (res
|
||||
res.FlagReset = append(res.FlagReset, flag_account_authorized)
|
||||
return res, nil
|
||||
}
|
||||
}
|
||||
} else {
|
||||
return res, nil
|
||||
}
|
||||
|
||||
return res, nil
|
||||
}
|
||||
|
||||
|
@ -22,6 +22,7 @@ const (
|
||||
DATA_OFFERINGS
|
||||
DATA_RECIPIENT
|
||||
DATA_AMOUNT
|
||||
DATA_TEMPORARY_PIN
|
||||
)
|
||||
|
||||
func typToBytes(typ DataTyp) []byte {
|
||||
|
1
services/registration/confirm_pin_change
Normal file
1
services/registration/confirm_pin_change
Normal file
@ -0,0 +1 @@
|
||||
Confirm your new PIN:
|
7
services/registration/confirm_pin_change.vis
Normal file
7
services/registration/confirm_pin_change.vis
Normal file
@ -0,0 +1,7 @@
|
||||
CATCH invalid_pin flag_valid_pin 0
|
||||
MOUT back 0
|
||||
HALT
|
||||
INCMP _ 0
|
||||
INCMP * pin_reset_success
|
||||
|
||||
|
1
services/registration/confirm_pin_change_swa
Normal file
1
services/registration/confirm_pin_change_swa
Normal file
@ -0,0 +1 @@
|
||||
Thibitisha PIN yako mpya:
|
1
services/registration/invalid_pin
Normal file
1
services/registration/invalid_pin
Normal file
@ -0,0 +1 @@
|
||||
The PIN you entered is invalid.The PIN must be different from your current PIN.For help call +254757628885
|
3
services/registration/invalid_pin.vis
Normal file
3
services/registration/invalid_pin.vis
Normal file
@ -0,0 +1,3 @@
|
||||
MOUT back 0
|
||||
HALT
|
||||
INCMP _ 0
|
1
services/registration/invalid_pin_swa
Normal file
1
services/registration/invalid_pin_swa
Normal file
@ -0,0 +1 @@
|
||||
PIN mpya na udhibitisho wa pin mpya hazilingani.Tafadhali jaribu tena.Kwa usaidizi piga simu +254757628885.
|
1
services/registration/new_pin
Normal file
1
services/registration/new_pin
Normal file
@ -0,0 +1 @@
|
||||
Enter a new four number pin
|
13
services/registration/new_pin.vis
Normal file
13
services/registration/new_pin.vis
Normal file
@ -0,0 +1,13 @@
|
||||
LOAD authorize_account 12
|
||||
RELOAD authorize_account
|
||||
CATCH incorrect_pin flag_incorrect_pin 1
|
||||
CATCH old_pin flag_allow_update 0
|
||||
MOUT back 0
|
||||
HALT
|
||||
INCMP _ 0
|
||||
LOAD save_temporary_pin 6
|
||||
LOAD verify_new_pin 0
|
||||
RELOAD save_temporary_pin
|
||||
RELOAD verify_new_pin
|
||||
INCMP * confirm_pin_change
|
||||
|
2
services/registration/new_pin_swa
Normal file
2
services/registration/new_pin_swa
Normal file
@ -0,0 +1,2 @@
|
||||
Weka PIN mpya ya nne nambari:
|
||||
|
1
services/registration/old_pin
Normal file
1
services/registration/old_pin
Normal file
@ -0,0 +1 @@
|
||||
Enter your old PIN
|
7
services/registration/old_pin.vis
Normal file
7
services/registration/old_pin.vis
Normal file
@ -0,0 +1,7 @@
|
||||
LOAD reset_allow_update 0
|
||||
MOUT back 0
|
||||
HALT
|
||||
RELOAD reset_allow_update
|
||||
INCMP _ 0
|
||||
INCMP new_pin *
|
||||
|
1
services/registration/old_pin_swa
Normal file
1
services/registration/old_pin_swa
Normal file
@ -0,0 +1 @@
|
||||
Weka PIN yako ya zamani:
|
@ -4,3 +4,5 @@ MOUT guard_pin 3
|
||||
MOUT back 0
|
||||
HALT
|
||||
INCMP _ 0
|
||||
INCMP old_pin 1
|
||||
|
||||
|
1
services/registration/pin_reset_mismatch
Normal file
1
services/registration/pin_reset_mismatch
Normal file
@ -0,0 +1 @@
|
||||
The PIN is not a match. Try again
|
6
services/registration/pin_reset_mismatch.vis
Normal file
6
services/registration/pin_reset_mismatch.vis
Normal file
@ -0,0 +1,6 @@
|
||||
MOUT retry 1
|
||||
MOUT quit 9
|
||||
HALT
|
||||
INCMP confirm_pin_change 1
|
||||
INCMP quit 9
|
||||
|
1
services/registration/pin_reset_success
Normal file
1
services/registration/pin_reset_success
Normal file
@ -0,0 +1 @@
|
||||
Your PIN change request has been successful
|
10
services/registration/pin_reset_success.vis
Normal file
10
services/registration/pin_reset_success.vis
Normal file
@ -0,0 +1,10 @@
|
||||
LOAD confirm_pin_change 0
|
||||
RELOAD confirm_pin_change
|
||||
CATCH pin_reset_mismatch flag_pin_mismatch 1
|
||||
MOUT back 0
|
||||
MOUT quit 9
|
||||
HALT
|
||||
INCMP main 0
|
||||
INCMP quit 9
|
||||
|
||||
|
1
services/registration/pin_reset_success_swa
Normal file
1
services/registration/pin_reset_success_swa
Normal file
@ -0,0 +1 @@
|
||||
Ombi lako la kubadili PIN limefanikiwa
|
Loading…
Reference in New Issue
Block a user