@genesislcap/foundation-auth 15.46.0 → 15.46.2-FUI-2625.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -77,11 +77,13 @@ export type JWTCredentials = {
77
77
  /**
78
78
  * @remarks
79
79
  * Will be sourced from MFA_CODE in url params.
80
+ * Set `mfaResend` to request a new code without submitting one (AUTH-473 / FUI-2625).
80
81
  * @public
81
82
  */
82
83
  export type MFACredentials = {
83
84
  type: CredentialType & CredentialType.MFA;
84
- mfaToken: string;
85
+ mfaToken?: string;
86
+ mfaResend?: boolean;
85
87
  };
86
88
  /**
87
89
  * Union of all credential types.
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/credential/types.ts"],"names":[],"mappings":"AAEA;;;GAGG;AACH,MAAM,WAAW,6BAA6B;IAC5C,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED;;;GAGG;AACH,MAAM,WAAW,uBAAuB;IACtC,MAAM,EAAE,6BAA6B,CAAC;CACvC;AAED;;;GAGG;AACH,eAAO,MAAM,uBAAuB,+EAAgD,CAAC;AAErF;;;GAGG;AACH,MAAM,MAAM,cAAc,GAAG,sBAAsB,GAAG;IACpD,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF;;;GAGG;AACH,MAAM,MAAM,oBAAoB,GAAG,wBAAwB,GAAG,EAAE,CAAC;AAEjE;;;GAGG;AACH,oBAAY,cAAc;IACxB,KAAK,UAAU;IACf,GAAG,QAAQ;IACX,GAAG,QAAQ;IACX,OAAO,YAAY;IACnB,GAAG,QAAQ;CACZ;AAED;;GAEG;AACH,MAAM,MAAM,gBAAgB,GAAG;IAC7B,IAAI,EAAE,cAAc,GAAG,cAAc,CAAC,KAAK,CAAC;IAC5C,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,cAAc,GAAG;IAC3B,IAAI,EAAE,cAAc,GAAG,cAAc,CAAC,GAAG,CAAC;IAC1C,QAAQ,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,kBAAkB,GAAG;IAC/B,IAAI,EAAE,cAAc,GAAG,cAAc,CAAC,OAAO,CAAC;IAC9C,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,cAAc,GAAG;IAC3B,IAAI,EAAE,cAAc,GAAG,cAAc,CAAC,GAAG,CAAC;IAC1C,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF;;;;GAIG;AACH,MAAM,MAAM,cAAc,GAAG;IAC3B,IAAI,EAAE,cAAc,GAAG,cAAc,CAAC,GAAG,CAAC;IAC1C,QAAQ,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF;;;GAGG;AACH,MAAM,MAAM,WAAW,GACnB,gBAAgB,GAChB,cAAc,GACd,cAAc,GACd,kBAAkB,GAClB,cAAc,CAAC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/credential/types.ts"],"names":[],"mappings":"AAEA;;;GAGG;AACH,MAAM,WAAW,6BAA6B;IAC5C,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED;;;GAGG;AACH,MAAM,WAAW,uBAAuB;IACtC,MAAM,EAAE,6BAA6B,CAAC;CACvC;AAED;;;GAGG;AACH,eAAO,MAAM,uBAAuB,+EAAgD,CAAC;AAErF;;;GAGG;AACH,MAAM,MAAM,cAAc,GAAG,sBAAsB,GAAG;IACpD,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF;;;GAGG;AACH,MAAM,MAAM,oBAAoB,GAAG,wBAAwB,GAAG,EAAE,CAAC;AAEjE;;;GAGG;AACH,oBAAY,cAAc;IACxB,KAAK,UAAU;IACf,GAAG,QAAQ;IACX,GAAG,QAAQ;IACX,OAAO,YAAY;IACnB,GAAG,QAAQ;CACZ;AAED;;GAEG;AACH,MAAM,MAAM,gBAAgB,GAAG;IAC7B,IAAI,EAAE,cAAc,GAAG,cAAc,CAAC,KAAK,CAAC;IAC5C,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,cAAc,GAAG;IAC3B,IAAI,EAAE,cAAc,GAAG,cAAc,CAAC,GAAG,CAAC;IAC1C,QAAQ,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,kBAAkB,GAAG;IAC/B,IAAI,EAAE,cAAc,GAAG,cAAc,CAAC,OAAO,CAAC;IAC9C,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,cAAc,GAAG;IAC3B,IAAI,EAAE,cAAc,GAAG,cAAc,CAAC,GAAG,CAAC;IAC1C,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF;;;;;GAKG;AACH,MAAM,MAAM,cAAc,GAAG;IAC3B,IAAI,EAAE,cAAc,GAAG,cAAc,CAAC,GAAG,CAAC;IAC1C,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB,CAAC;AAEF;;;GAGG;AACH,MAAM,MAAM,WAAW,GACnB,gBAAgB,GAChB,cAAc,GACd,cAAc,GACd,kBAAkB,GAClB,cAAc,CAAC"}
@@ -15,7 +15,9 @@ export interface EVENT_LOGIN_AUTH extends MESSAGE {
15
15
  readonly JWT: string;
16
16
  readonly DOMAIN: string;
17
17
  } | {
18
- readonly MFA_CODE: string;
18
+ readonly MFA_CODE?: string;
19
+ /** When true, requests a new MFA code (AUTH-473). */
20
+ readonly MFA_RESEND?: boolean;
19
21
  };
20
22
  }
21
23
  //# sourceMappingURL=EVENT_LOGIN_AUTH.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"EVENT_LOGIN_AUTH.d.ts","sourceRoot":"","sources":["../../../src/dto/EVENT_LOGIN_AUTH.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEzC;;GAEG;AACH,MAAM,WAAW,gBAAiB,SAAQ,OAAO;IAC/C,QAAQ,CAAC,OAAO,EACZ;QACE,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;QAC3B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;KAC3B,GACD;QACE,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;QAC3B,QAAQ,CAAC,kBAAkB,EAAE,MAAM,CAAC;KACrC,GACD;QACE,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;KAC5B,GACD;QACE,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;QACrB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;KACzB,GACD;QACE,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;KAC3B,CAAC;CACP"}
1
+ {"version":3,"file":"EVENT_LOGIN_AUTH.d.ts","sourceRoot":"","sources":["../../../src/dto/EVENT_LOGIN_AUTH.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEzC;;GAEG;AACH,MAAM,WAAW,gBAAiB,SAAQ,OAAO;IAC/C,QAAQ,CAAC,OAAO,EACZ;QACE,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;QAC3B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;KAC3B,GACD;QACE,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;QAC3B,QAAQ,CAAC,kBAAkB,EAAE,MAAM,CAAC;KACrC,GACD;QACE,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;KAC5B,GACD;QACE,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;QACrB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;KACzB,GACD;QACE,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;QAC3B,qDAAqD;QACrD,QAAQ,CAAC,UAAU,CAAC,EAAE,OAAO,CAAC;KAC/B,CAAC;CACP"}
@@ -1,4 +1,9 @@
1
1
  import type { NACK } from './NACK';
2
+ /**
3
+ * MFA delivery mechanism returned on MFA_REQUIRED / MFA_FAILED NACKs (AUTH-473).
4
+ * @public
5
+ */
6
+ export type MFA_TYPE = 'NOTIFY' | 'QR_CODE';
2
7
  /**
3
8
  * @public
4
9
  */
@@ -8,5 +13,9 @@ export interface EVENT_LOGIN_AUTH_NACK extends NACK {
8
13
  */
9
14
  readonly REFRESH_AUTH_TOKEN: string;
10
15
  readonly REFRESH_TOKEN_EXPIRATION_MINS: number;
16
+ /**
17
+ * MFA type when MFA is required or has failed (AUTH-473).
18
+ */
19
+ readonly MFA_TYPE?: MFA_TYPE;
11
20
  }
12
21
  //# sourceMappingURL=EVENT_LOGIN_AUTH_NACK.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"EVENT_LOGIN_AUTH_NACK.d.ts","sourceRoot":"","sources":["../../../src/dto/EVENT_LOGIN_AUTH_NACK.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAEnC;;GAEG;AACH,MAAM,WAAW,qBAAsB,SAAQ,IAAI;IACjD;;OAEG;IACH,QAAQ,CAAC,kBAAkB,EAAE,MAAM,CAAC;IACpC,QAAQ,CAAC,6BAA6B,EAAE,MAAM,CAAC;CAChD"}
1
+ {"version":3,"file":"EVENT_LOGIN_AUTH_NACK.d.ts","sourceRoot":"","sources":["../../../src/dto/EVENT_LOGIN_AUTH_NACK.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAEnC;;;GAGG;AACH,MAAM,MAAM,QAAQ,GAAG,QAAQ,GAAG,SAAS,CAAC;AAE5C;;GAEG;AACH,MAAM,WAAW,qBAAsB,SAAQ,IAAI;IACjD;;OAEG;IACH,QAAQ,CAAC,kBAAkB,EAAE,MAAM,CAAC;IACpC,QAAQ,CAAC,6BAA6B,EAAE,MAAM,CAAC;IAC/C;;OAEG;IACH,QAAQ,CAAC,QAAQ,CAAC,EAAE,QAAQ,CAAC;CAC9B"}
@@ -3,6 +3,7 @@ export { EVENT_CHANGE_USER_PASSWORD } from './EVENT_CHANGE_USER_PASSWORD';
3
3
  export { EVENT_LOGIN_AUTH } from './EVENT_LOGIN_AUTH';
4
4
  export { EVENT_LOGIN_AUTH_ACK } from './EVENT_LOGIN_AUTH_ACK';
5
5
  export { EVENT_LOGIN_AUTH_NACK } from './EVENT_LOGIN_AUTH_NACK';
6
+ export type { MFA_TYPE } from './EVENT_LOGIN_AUTH_NACK';
6
7
  export { EVENT_LOGIN_DETAILS_ACK } from './EVENT_LOGIN_DETAILS_ACK';
7
8
  export { EVENT_LOGOUT_NACK } from './EVENT_LOGOUT_NACK';
8
9
  export { EVENT_PASSWORD_RESET_ACTION } from './EVENT_PASSWORD_RESET_ACTION';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/dto/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AAC5B,OAAO,EAAE,0BAA0B,EAAE,MAAM,8BAA8B,CAAC;AAC1E,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAChE,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AACpE,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,2BAA2B,EAAE,MAAM,+BAA+B,CAAC;AAC5E,OAAO,EAAE,iCAAiC,EAAE,MAAM,qCAAqC,CAAC;AACxF,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,IAAI,EAAE,kBAAkB,EAAE,MAAM,QAAQ,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/dto/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AAC5B,OAAO,EAAE,0BAA0B,EAAE,MAAM,8BAA8B,CAAC;AAC1E,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAChE,YAAY,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AACxD,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AACpE,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,2BAA2B,EAAE,MAAM,+BAA+B,CAAC;AAC5E,OAAO,EAAE,iCAAiC,EAAE,MAAM,qCAAqC,CAAC;AACxF,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,IAAI,EAAE,kBAAkB,EAAE,MAAM,QAAQ,CAAC"}
@@ -1,3 +1,4 @@
1
+ import type { MFA_TYPE } from '../dto/EVENT_LOGIN_AUTH_NACK';
1
2
  import type { Nack } from './nack';
2
3
  /**
3
4
  * @public
@@ -8,7 +9,10 @@ export interface LoginNack extends Nack {
8
9
  readonly hasIncorrectCredentials: boolean;
9
10
  readonly maxTriesReached: boolean;
10
11
  readonly isMFARequired: boolean;
12
+ readonly isMFAFailed: boolean;
11
13
  readonly hasPasswordExpired: boolean;
12
14
  readonly requiresTermsAndConditions: boolean;
15
+ /** MFA delivery type from AUTH-473 (`NOTIFY` | `QR_CODE`). */
16
+ readonly mfaType?: MFA_TYPE;
13
17
  }
14
18
  //# sourceMappingURL=loginNack.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"loginNack.d.ts","sourceRoot":"","sources":["../../../src/entity/loginNack.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAEnC;;GAEG;AACH,MAAM,WAAW,SAAU,SAAQ,IAAI;IACrC,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,0BAA0B,EAAE,MAAM,CAAC;IAC5C,QAAQ,CAAC,uBAAuB,EAAE,OAAO,CAAC;IAC1C,QAAQ,CAAC,eAAe,EAAE,OAAO,CAAC;IAClC,QAAQ,CAAC,aAAa,EAAE,OAAO,CAAC;IAChC,QAAQ,CAAC,kBAAkB,EAAE,OAAO,CAAC;IACrC,QAAQ,CAAC,0BAA0B,EAAE,OAAO,CAAC;CAC9C"}
1
+ {"version":3,"file":"loginNack.d.ts","sourceRoot":"","sources":["../../../src/entity/loginNack.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,8BAA8B,CAAC;AAC7D,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAEnC;;GAEG;AACH,MAAM,WAAW,SAAU,SAAQ,IAAI;IACrC,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,0BAA0B,EAAE,MAAM,CAAC;IAC5C,QAAQ,CAAC,uBAAuB,EAAE,OAAO,CAAC;IAC1C,QAAQ,CAAC,eAAe,EAAE,OAAO,CAAC;IAClC,QAAQ,CAAC,aAAa,EAAE,OAAO,CAAC;IAChC,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC;IAC9B,QAAQ,CAAC,kBAAkB,EAAE,OAAO,CAAC;IACrC,QAAQ,CAAC,0BAA0B,EAAE,OAAO,CAAC;IAC7C,8DAA8D;IAC9D,QAAQ,CAAC,OAAO,CAAC,EAAE,QAAQ,CAAC;CAC7B"}
@@ -1 +1 @@
1
- {"version":3,"file":"machine.d.ts","sourceRoot":"","sources":["../../../src/machine/machine.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,eAAe,EAEf,YAAY,EACZ,iBAAiB,EAMjB,OAAO,EACR,MAAM,uCAAuC,CAAC;AAC/C,OAAO,EAAE,IAAI,EAAE,MAAM,8BAA8B,CAAC;AACpD,OAAO,EACL,IAAI,EASL,MAAM,+BAA+B,CAAC;AAEvC,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,QAAQ,CAAC;AAEjD,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAEL,iBAAiB,EAIlB,MAAM,eAAe,CAAC;AAIvB,OAAO,EACL,iBAAiB,EAQlB,MAAM,WAAW,CAAC;AACnB,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAGhD,OAAO,KAAK,EAEV,kBAAkB,EAClB,gBAAgB,EAGhB,WAAW,EACX,WAAW,EAEZ,MAAM,SAAS,CAAC;AAGjB;;;GAGG;AACH,MAAM,WAAW,WAAY,SAAQ,OAAO,CAAC,kBAAkB,EAAE,gBAAgB,CAAC;CAAG;AAErF;;;GAGG;AACH,qBAAa,kBACX,SAAQ,eAAe,CAAC,kBAAkB,EAAE,gBAAgB,CAC5D,YAAW,WAAW;IAGd,OAAO,CAAC,IAAI;IACJ,OAAO,CAAC,YAAY;IACf,OAAO,CAAC,EAAE;IACvB,OAAO,CAAC,IAAI;IACC,OAAO,CAAC,aAAa;IAC5B,OAAO,CAAC,MAAM;IACb,OAAO,CAAC,OAAO;gBANd,IAAI,EAAE,IAAI,EACF,YAAY,EAAE,YAAY,EACrB,EAAE,EAAE,iBAAiB,EAClC,IAAI,EAAE,IAAI,EACG,aAAa,EAAE,iBAAiB,EACvC,MAAM,EAAE,UAAU,EACjB,OAAO,EAAE,WAAW;IAytB3C,KAAK,CACH,OAAO,GAAE,kBAAkB,CAAC,OAAO,IAAI,CAAC,OAAO,CAM9C;IAKH;;OAEG;IACH,gBAAgB,IAAI,IAAI;IAIxB,SAAS,CAAC,sBAAsB,IAAI,WAAW;IAQ/C,SAAS,CAAC,+BAA+B,CAAC,MAAM,EAAE,WAAW,GAAG,WAAW;IAuB3E,SAAS,CAAC,uBAAuB,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,KAAK,GAAG,iBAAiB;IAgB3E,SAAS,CAAC,YAAY;;;;;;;;;;;;;;;;;;;;;MAwBpB;IAEF,SAAS,CAAC,aAAa;;;MAGpB;CACJ;AAED;;;GAGG;AACH,eAAO,MAAM,WAAW,mEAA0E,CAAC;AAEnG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,wBAAgB,cAAc,IAAI,WAAW,CAE5C"}
1
+ {"version":3,"file":"machine.d.ts","sourceRoot":"","sources":["../../../src/machine/machine.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,eAAe,EAEf,YAAY,EACZ,iBAAiB,EAMjB,OAAO,EACR,MAAM,uCAAuC,CAAC;AAC/C,OAAO,EAAE,IAAI,EAAE,MAAM,8BAA8B,CAAC;AACpD,OAAO,EACL,IAAI,EASL,MAAM,+BAA+B,CAAC;AAEvC,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,QAAQ,CAAC;AAEjD,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAEL,iBAAiB,EAIlB,MAAM,eAAe,CAAC;AAIvB,OAAO,EACL,iBAAiB,EAQlB,MAAM,WAAW,CAAC;AACnB,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAGhD,OAAO,KAAK,EAEV,kBAAkB,EAClB,gBAAgB,EAGhB,WAAW,EACX,WAAW,EAEZ,MAAM,SAAS,CAAC;AAGjB;;;GAGG;AACH,MAAM,WAAW,WAAY,SAAQ,OAAO,CAAC,kBAAkB,EAAE,gBAAgB,CAAC;CAAG;AAErF;;;GAGG;AACH,qBAAa,kBACX,SAAQ,eAAe,CAAC,kBAAkB,EAAE,gBAAgB,CAC5D,YAAW,WAAW;IAGd,OAAO,CAAC,IAAI;IACJ,OAAO,CAAC,YAAY;IACf,OAAO,CAAC,EAAE;IACvB,OAAO,CAAC,IAAI;IACC,OAAO,CAAC,aAAa;IAC5B,OAAO,CAAC,MAAM;IACb,OAAO,CAAC,OAAO;gBANd,IAAI,EAAE,IAAI,EACF,YAAY,EAAE,YAAY,EACrB,EAAE,EAAE,iBAAiB,EAClC,IAAI,EAAE,IAAI,EACG,aAAa,EAAE,iBAAiB,EACvC,MAAM,EAAE,UAAU,EACjB,OAAO,EAAE,WAAW;IAuwB3C,KAAK,CACH,OAAO,GAAE,kBAAkB,CAAC,OAAO,IAAI,CAAC,OAAO,CAM9C;IAKH;;OAEG;IACH,gBAAgB,IAAI,IAAI;IAIxB,SAAS,CAAC,sBAAsB,IAAI,WAAW;IAQ/C,SAAS,CAAC,+BAA+B,CAAC,MAAM,EAAE,WAAW,GAAG,WAAW;IAuB3E,SAAS,CAAC,uBAAuB,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,KAAK,GAAG,iBAAiB;IAgB3E,SAAS,CAAC,YAAY;;;;;;;;;;;;;;;;;;;;;MAwBpB;IAEF,SAAS,CAAC,aAAa;;;MAGpB;CACJ;AAED;;;GAGG;AACH,eAAO,MAAM,WAAW,mEAA0E,CAAC;AAEnG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,wBAAgB,cAAc,IAAI,WAAW,CAE5C"}
@@ -2,6 +2,7 @@ import type { MachineContext } from '@genesislcap/foundation-state-machine';
2
2
  import type { User } from '@genesislcap/foundation-user';
3
3
  import type { DoneInvokeEvent, ErrorEvent } from 'xstate';
4
4
  import { Credentials } from '../credential';
5
+ import type { MFA_TYPE } from '../dto/EVENT_LOGIN_AUTH_NACK';
5
6
  import type { AuthDTO, AuthEntity } from '../mapper';
6
7
  /**
7
8
  * @public
@@ -85,6 +86,10 @@ export interface AuthMachineContext extends MachineContext {
85
86
  * The user, either authenticated or anonymous.
86
87
  */
87
88
  user: User;
89
+ /**
90
+ * MFA delivery type from the latest MFA_REQUIRED / MFA_FAILED NACK (AUTH-473).
91
+ */
92
+ mfaType?: MFA_TYPE;
88
93
  }
89
94
  /**
90
95
  * AuthMachineEvent type.
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/machine/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/machine/types.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"loginMapper.d.ts","sourceRoot":"","sources":["../../../src/mapper/loginMapper.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,+BAA+B,CAAC;AAErD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAEjD,OAAO,KAAK,EACV,gBAAgB,EAChB,oBAAoB,EACpB,qBAAqB,EACrB,uBAAuB,EACxB,MAAM,QAAQ,CAAC;AAChB,OAAO,EAAE,OAAO,EAAgB,MAAM,QAAQ,CAAC;AAC/C,OAAO,KAAK,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,IAAI,SAAS,EAAE,MAAM,6BAA6B,CAAC;AAC9F,OAAO,KAAK,EAAE,QAAQ,EAAE,eAAe,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC5E,OAAO,KAAK,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,IAAI,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAI3F,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AASjC;;;GAGG;AACH,MAAM,MAAM,QAAQ,GAChB,gBAAgB,GAChB,oBAAoB,GACpB,qBAAqB,GACrB,uBAAuB,GACvB,OAAO,CAAC;AAEZ;;;GAGG;AACH,MAAM,MAAM,WAAW,GAAG,WAAW,GAAG,QAAQ,GAAG,eAAe,GAAG,SAAS,GAAG,IAAI,CAAC;AAEtF;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,QAAQ,GAAG,GAAG,IAAI,oBAAoB,CAExE;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,QAAQ,GAAG,GAAG,IAAI,uBAAuB,CAElF;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,QAAQ,GAAG,GAAG,IAAI,qBAAqB,CAE1E;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,WAAW,GAAG,MAAM,IAAI,QAAQ,CAExE;AAED;;;;GAIG;AACH,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,WAAW,GAAG,MAAM,IAAI,eAAe,CAEtF;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,WAAW,GAAG,MAAM,IAAI,SAAS,CAE1E;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,MAAM,WAAW,WAAY,SAAQ,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC;CAAG;AAErE;;;GAGG;AACH,qBAAa,kBAAmB,YAAW,WAAW;IAC9C,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC;IAE3B;;OAEG;IACH,QAAQ,GAAI,KAAK,QAAQ,KAAG,WAAW,CAqDrC;IAEF;;OAEG;IACH,KAAK,GAAI,QAAQ,WAAW,KAAG,QAAQ,CAgDrC;IAEF,SAAS,CAAC,aAAa,GAAI,QAAQ,SAAS,KAAG,YAAY,CACnB;IAExC,SAAS,CAAC,cAAc,GAAI,UAAU,UAAU,EAAE,KAAG,aAAa,EAAE,CAM3D;CACV;AAED;;;;;;;GAOG;AACH,eAAO,MAAM,WAAW,mEAA0E,CAAC"}
1
+ {"version":3,"file":"loginMapper.d.ts","sourceRoot":"","sources":["../../../src/mapper/loginMapper.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,+BAA+B,CAAC;AAErD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAEjD,OAAO,KAAK,EACV,gBAAgB,EAChB,oBAAoB,EACpB,qBAAqB,EACrB,uBAAuB,EACxB,MAAM,QAAQ,CAAC;AAChB,OAAO,EAAE,OAAO,EAAgB,MAAM,QAAQ,CAAC;AAC/C,OAAO,KAAK,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,IAAI,SAAS,EAAE,MAAM,6BAA6B,CAAC;AAC9F,OAAO,KAAK,EAAE,QAAQ,EAAE,eAAe,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC5E,OAAO,KAAK,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,IAAI,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAI3F,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AASjC;;;GAGG;AACH,MAAM,MAAM,QAAQ,GAChB,gBAAgB,GAChB,oBAAoB,GACpB,qBAAqB,GACrB,uBAAuB,GACvB,OAAO,CAAC;AAEZ;;;GAGG;AACH,MAAM,MAAM,WAAW,GAAG,WAAW,GAAG,QAAQ,GAAG,eAAe,GAAG,SAAS,GAAG,IAAI,CAAC;AAEtF;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,QAAQ,GAAG,GAAG,IAAI,oBAAoB,CAExE;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,QAAQ,GAAG,GAAG,IAAI,uBAAuB,CAElF;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,QAAQ,GAAG,GAAG,IAAI,qBAAqB,CAE1E;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,WAAW,GAAG,MAAM,IAAI,QAAQ,CAExE;AAED;;;;GAIG;AACH,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,WAAW,GAAG,MAAM,IAAI,eAAe,CAEtF;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,WAAW,GAAG,MAAM,IAAI,SAAS,CAE1E;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,MAAM,WAAW,WAAY,SAAQ,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC;CAAG;AAErE;;;GAGG;AACH,qBAAa,kBAAmB,YAAW,WAAW;IAC9C,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC;IAE3B;;OAEG;IACH,QAAQ,GAAI,KAAK,QAAQ,KAAG,WAAW,CAuDrC;IAEF;;OAEG;IACH,KAAK,GAAI,QAAQ,WAAW,KAAG,QAAQ,CAiDrC;IAEF,SAAS,CAAC,aAAa,GAAI,QAAQ,SAAS,KAAG,YAAY,CACnB;IAExC,SAAS,CAAC,cAAc,GAAI,UAAU,UAAU,EAAE,KAAG,aAAa,EAAE,CAM3D;CACV;AAED;;;;;;;GAOG;AACH,eAAO,MAAM,WAAW,mEAA0E,CAAC"}
@@ -16,8 +16,11 @@ export declare class Verify extends BaseRoute {
16
16
  * True while AuthMachine is in the awaitingMfa state (or its feedback return path still tagged).
17
17
  */
18
18
  get isAwaitingMfa(): boolean;
19
+ /** Show Resend only for notify-delivered MFA codes (AUTH-473 / FUI-2625). */
20
+ get showResendCode(): boolean;
19
21
  get submitDisabled(): boolean;
20
22
  onBack: () => void;
23
+ onResend: () => void;
21
24
  onSubmit(event: Event): void;
22
25
  private attemptMfaLogin;
23
26
  login(params: LoginParams): void;
@@ -1 +1 @@
1
- {"version":3,"file":"verify.d.ts","sourceRoot":"","sources":["../../../../src/routes/verify/verify.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAkC,MAAM,kBAAkB,CAAC;AACrF,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAGlD,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAGpC;;;;;;GAMG;AACH,qBAKa,MAAO,SAAQ,SAAS;IAChB,iBAAiB,EAAE,iBAAiB,CAAC;IAC5C,IAAI,EAAE,MAAM,CAAM;IAE9B,iBAAiB;IAUjB;;OAEG;IACH,IAAI,aAAa,YAIhB;IAED,IAAI,cAAc,YAEjB;IAED,MAAM,aAGJ;IAEF,QAAQ,CAAC,KAAK,EAAE,KAAK;IAerB,OAAO,CAAC,eAAe;IAevB,KAAK,CAAC,MAAM,EAAE,WAAW;CAG1B"}
1
+ {"version":3,"file":"verify.d.ts","sourceRoot":"","sources":["../../../../src/routes/verify/verify.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAkC,MAAM,kBAAkB,CAAC;AACrF,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAGlD,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAGpC;;;;;;GAMG;AACH,qBAKa,MAAO,SAAQ,SAAS;IAChB,iBAAiB,EAAE,iBAAiB,CAAC;IAC5C,IAAI,EAAE,MAAM,CAAM;IAE9B,iBAAiB;IAUjB;;OAEG;IACH,IAAI,aAAa,YAIhB;IAED,6EAA6E;IAC7E,IAAI,cAAc,YAEjB;IAED,IAAI,cAAc,YAEjB;IAED,MAAM,aAGJ;IAEF,QAAQ,aAiBN;IAEF,QAAQ,CAAC,KAAK,EAAE,KAAK;IAerB,OAAO,CAAC,eAAe;IAevB,KAAK,CAAC,MAAM,EAAE,WAAW;CAG1B"}
@@ -1 +1 @@
1
- {"version":3,"file":"verify.template.d.ts","sourceRoot":"","sources":["../../../../src/routes/verify/verify.template.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAEvC;;;GAGG;AACH,eAAO,MAAM,cAAc,6DAwC1B,CAAC"}
1
+ {"version":3,"file":"verify.template.d.ts","sourceRoot":"","sources":["../../../../src/routes/verify/verify.template.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAEvC;;;GAGG;AACH,eAAO,MAAM,cAAc,6DAyD1B,CAAC"}
@@ -99,7 +99,7 @@ let DefaultCredentialManager = class DefaultCredentialManager {
99
99
  return credentials && !!credentials.ssoToken;
100
100
  }
101
101
  validateMFACredentials(credentials) {
102
- return credentials && !!credentials.mfaToken;
102
+ return credentials && (!!credentials.mfaToken || !!credentials.mfaResend);
103
103
  }
104
104
  validateUserCredentialData(data, ensurePassword) {
105
105
  const baseResult = data &&
@@ -179,7 +179,7 @@ let DefaultAuthMachine = class DefaultAuthMachine extends AbstractMachine {
179
179
  meta: {
180
180
  content: 'Logged in.',
181
181
  },
182
- entry: ['storeBasicCredentials', 'loggedInCallback', 'postLoginRedirect'],
182
+ entry: ['storeBasicCredentials', 'clearMfaType', 'loggedInCallback', 'postLoginRedirect'],
183
183
  on: {
184
184
  logout: {
185
185
  target: '#authMachine.loggingOut',
@@ -443,13 +443,18 @@ let DefaultAuthMachine = class DefaultAuthMachine extends AbstractMachine {
443
443
  actions: ['setUser'],
444
444
  target: '#authMachine.authCheck',
445
445
  },
446
+ {
447
+ guard: and(['isLoginNackEntity', 'hasIncorrectCredentials', 'isMfaChallenge']),
448
+ actions: 'storeMfaType',
449
+ target: '#authMachine.feedback.incorrectMfa',
450
+ },
446
451
  {
447
452
  guard: and(['isLoginNackEntity', 'hasIncorrectCredentials']),
448
453
  target: '#authMachine.feedback.incorrectCredentials',
449
454
  },
450
455
  {
451
456
  guard: and(['isLoginNackEntity', 'isMFARequired']),
452
- actions: 'storeBasicCredentials',
457
+ actions: ['storeBasicCredentials', 'storeMfaType'],
453
458
  target: '#authMachine.feedback.mfaRequired',
454
459
  },
455
460
  {
@@ -463,8 +468,14 @@ let DefaultAuthMachine = class DefaultAuthMachine extends AbstractMachine {
463
468
  target: '#authMachine.feedback.termsAndConditions',
464
469
  },
465
470
  {
466
- guard: and(['isLoginNackEntity', 'isMfaLoginParams']),
467
- target: '#authMachine.feedback.incorrectCredentials',
471
+ guard: and(['isLoginNackEntity', 'isMFAFailed']),
472
+ actions: 'storeMfaType',
473
+ target: '#authMachine.feedback.incorrectMfa',
474
+ },
475
+ {
476
+ guard: and(['isLoginNackEntity', 'isMfaChallenge']),
477
+ actions: 'storeMfaType',
478
+ target: '#authMachine.feedback.incorrectMfa',
468
479
  },
469
480
  {
470
481
  guard: 'isLoginNackEntity',
@@ -556,7 +567,7 @@ let DefaultAuthMachine = class DefaultAuthMachine extends AbstractMachine {
556
567
  after: {
557
568
  feedbackDelay: [
558
569
  {
559
- guard: 'isMfaLoginParams',
570
+ guard: 'isMfaChallenge',
560
571
  target: '#authMachine.awaitingMfa',
561
572
  },
562
573
  {
@@ -565,6 +576,21 @@ let DefaultAuthMachine = class DefaultAuthMachine extends AbstractMachine {
565
576
  ],
566
577
  },
567
578
  },
579
+ /**
580
+ * Wrong MFA code (or failed MFA resend). Keeps awaitingMfa so Verify does not bounce to login.
581
+ */
582
+ incorrectMfa: {
583
+ tags: ['feedback', 'incorrectCredentials', 'awaitingMfa'],
584
+ meta: {
585
+ content: 'MESSAGE_INCORRECT_MFA_CODE',
586
+ },
587
+ entry: ['verifyRedirect'],
588
+ after: {
589
+ feedbackDelay: {
590
+ target: '#authMachine.awaitingMfa',
591
+ },
592
+ },
593
+ },
568
594
  mfaRequired: {
569
595
  tags: ['feedback', 'mfaRequired'],
570
596
  meta: {
@@ -696,6 +722,17 @@ let DefaultAuthMachine = class DefaultAuthMachine extends AbstractMachine {
696
722
  this.cm.storeCredentials(data);
697
723
  }
698
724
  },
725
+ storeMfaType: assign(({ event, context }) => {
726
+ if (isDoneInvokeEvent(event) &&
727
+ isLoginNackEntity(event.output) &&
728
+ event.output.mfaType) {
729
+ return { mfaType: event.output.mfaType };
730
+ }
731
+ return { mfaType: context.mfaType };
732
+ }),
733
+ clearMfaType: assign({
734
+ mfaType: () => undefined,
735
+ }),
699
736
  postLoginRedirect: this.config.postLoginRedirect,
700
737
  postLogoutRedirect: this.config.postLogoutRedirect,
701
738
  resetPasswordRedirect: () => this.routing.navigateTo('reset-password?expired'),
@@ -732,7 +769,12 @@ let DefaultAuthMachine = class DefaultAuthMachine extends AbstractMachine {
732
769
  isMFARequired: ({ event }) => isDoneInvokeEvent(event)
733
770
  ? isLoginNackEntity(event.output) && event.output.isMFARequired
734
771
  : false,
772
+ isMFAFailed: ({ event }) => isDoneInvokeEvent(event)
773
+ ? isLoginNackEntity(event.output) && event.output.isMFAFailed
774
+ : false,
735
775
  isMfaLoginParams: ({ context }) => isLoginParams(context.params) && context.params.type === CredentialType.MFA,
776
+ isMfaChallenge: ({ context }) => (isLoginParams(context.params) && context.params.type === CredentialType.MFA) ||
777
+ !!context.mfaType,
736
778
  hasPasswordExpired: ({ event }) => isDoneInvokeEvent(event)
737
779
  ? isLoginNackEntity(event.output) && event.output.hasPasswordExpired
738
780
  : false,
@@ -8,6 +8,7 @@ export const defaultAuthMachineContext = {
8
8
  dto: undefined,
9
9
  entity: undefined,
10
10
  user: undefined,
11
+ mfaType: undefined,
11
12
  };
12
13
  /**
13
14
  * isLoginParams.
@@ -82,7 +82,7 @@ export class DefaultLoginMapper {
82
82
  return ack;
83
83
  }
84
84
  if (isLoginNackDTO(dto)) {
85
- const nack = Object.assign(Object.assign({}, fromDTONack(dto)), { refreshAuthToken: dto.REFRESH_AUTH_TOKEN, refreshTokenExpirationMins: dto.REFRESH_TOKEN_EXPIRATION_MINS, hasIncorrectCredentials: hasDTOErrorWarningCode(dto, 'INCORRECT_CREDENTIALS'), maxTriesReached: hasDTOErrorWarningCode(dto, 'MAX_TRIES_REACHED'), isMFARequired: hasDTOErrorWarningCode(dto, 'MFA_REQUIRED'), hasPasswordExpired: hasDTOErrorWarningCode(dto, 'PASSWORD_EXPIRED'), requiresTermsAndConditions: hasDTOErrorWarningCode(dto, 'TERMS_ACCEPTANCE_REQUIRED') });
85
+ const nack = Object.assign(Object.assign({}, fromDTONack(dto)), { refreshAuthToken: dto.REFRESH_AUTH_TOKEN, refreshTokenExpirationMins: dto.REFRESH_TOKEN_EXPIRATION_MINS, hasIncorrectCredentials: hasDTOErrorWarningCode(dto, 'INCORRECT_CREDENTIALS'), maxTriesReached: hasDTOErrorWarningCode(dto, 'MAX_TRIES_REACHED'), isMFARequired: hasDTOErrorWarningCode(dto, 'MFA_REQUIRED'), isMFAFailed: hasDTOErrorWarningCode(dto, 'MFA_FAILED'), hasPasswordExpired: hasDTOErrorWarningCode(dto, 'PASSWORD_EXPIRED'), requiresTermsAndConditions: hasDTOErrorWarningCode(dto, 'TERMS_ACCEPTANCE_REQUIRED'), mfaType: dto.MFA_TYPE });
86
86
  return nack;
87
87
  }
88
88
  if (isNackDTO(dto)) {
@@ -129,9 +129,7 @@ export class DefaultLoginMapper {
129
129
  };
130
130
  break;
131
131
  case CredentialType.MFA:
132
- DETAILS = {
133
- MFA_CODE: params.mfaToken,
134
- };
132
+ DETAILS = Object.assign(Object.assign({}, (params.mfaToken ? { MFA_CODE: params.mfaToken } : {})), (params.mfaResend ? { MFA_RESEND: true } : {}));
135
133
  break;
136
134
  }
137
135
  const dto = {
@@ -20,6 +20,21 @@ let Verify = class Verify extends BaseRoute {
20
20
  this.store.authMachine.send({ type: 'cancel-mfa' });
21
21
  this.routing.navigateTo('');
22
22
  };
23
+ this.onResend = () => {
24
+ if (this.submitDisabled || !this.showResendCode) {
25
+ return;
26
+ }
27
+ const mfaCredentials = {
28
+ type: CredentialType.MFA,
29
+ mfaResend: true,
30
+ };
31
+ if (!this.credentialManager.validateMFACredentials(mfaCredentials)) {
32
+ logger.debug(`MFA resend credentials appear invalid, aborting.`);
33
+ return;
34
+ }
35
+ logger.debug(`Requesting a new MFA code.`);
36
+ this.login(mfaCredentials);
37
+ };
23
38
  }
24
39
  connectedCallback() {
25
40
  super.connectedCallback();
@@ -35,6 +50,10 @@ let Verify = class Verify extends BaseRoute {
35
50
  get isAwaitingMfa() {
36
51
  return (this.store.authMachine.matches('awaitingMfa') || this.store.authMachine.hasTag('awaitingMfa'));
37
52
  }
53
+ /** Show Resend only for notify-delivered MFA codes (AUTH-473 / FUI-2625). */
54
+ get showResendCode() {
55
+ return this.store.authMachine.context.mfaType === 'NOTIFY';
56
+ }
38
57
  get submitDisabled() {
39
58
  return this.store.authMachine.hasTag('pending');
40
59
  }
@@ -1,5 +1,5 @@
1
1
  import { sync } from '@genesislcap/foundation-utils';
2
- import { html } from '@microsoft/fast-element';
2
+ import { html, when } from '@microsoft/fast-element';
3
3
  import { backButton, showEnvironmentIndicator, submitButton } from '../base';
4
4
  /**
5
5
  * VerifyTemplate
@@ -30,6 +30,20 @@ export const VerifyTemplate = html `
30
30
  >
31
31
  <span class="form-title">${(x) => x.toLocalisedText('VERIFY_FORM_TITLE')}</span>
32
32
  </rapid-verification-code-input>
33
+ ${when((x) => x.showResendCode, html `
34
+ <div class="links">
35
+ <rapid-button
36
+ class="link-url"
37
+ appearance="lightweight"
38
+ type="button"
39
+ ?disabled=${(x) => x.submitDisabled}
40
+ @click=${(x) => x.onResend()}
41
+ data-test-id="resend-code"
42
+ >
43
+ ${(x) => x.toLocalisedText('VERIFY_RESEND_CODE')}
44
+ </rapid-button>
45
+ </div>
46
+ `)}
33
47
  <div class="form-buttons">
34
48
  ${(x) => submitButton(x.toLocalisedText('VERIFY_SUBMIT_BUTTON_LABEL'), 'submit', x.submitDisabled)}
35
49
  ${(x) => backButton(() => x.onBack(), x.toLocalisedText('VERIFY_BACK_BUTTON'))}
@@ -35,6 +35,7 @@
35
35
  "VERIFY_FORM_TITLE": "Verification Code",
36
36
  "VERIFY_SUBMIT_BUTTON_LABEL": "Verify and Login",
37
37
  "VERIFY_BACK_BUTTON": "Back",
38
+ "VERIFY_RESEND_CODE": "Resend code",
38
39
  "FIELD_USERNAME_TITLE": "Username",
39
40
  "FIELD_EMAIL_TITLE": "Email",
40
41
  "FIELD_PASSWORD_TITLE": "Password",
@@ -45,6 +46,7 @@
45
46
  "MESSAGE_FORGOT_PASSWORD_RESET": "Please check your inbox for reset instructions.",
46
47
  "MESSAGE_PASSWORD_RESET_SUCCESS": "Password reset success. Redirecting to login.",
47
48
  "MESSAGE_INCORRECT_CREDENTIALS": "Incorrect credentials, please try again.",
49
+ "MESSAGE_INCORRECT_MFA_CODE": "Incorrect verification code, please try again.",
48
50
  "MESSAGE_MFA_REQUIRED": "Please check your inbox for your login link.",
49
51
  "MESSAGE_PASSWORD_EXPIRED": "You are required to change your password.",
50
52
  "ERROR_UNKNOWN_ERROR": "Unknown error.",
@@ -2095,6 +2095,34 @@
2095
2095
  "endIndex": 2
2096
2096
  }
2097
2097
  },
2098
+ {
2099
+ "kind": "PropertySignature",
2100
+ "canonicalReference": "@genesislcap/foundation-auth!AuthMachineContext#mfaType:member",
2101
+ "docComment": "/**\n * MFA delivery type from the latest MFA_REQUIRED / MFA_FAILED NACK (AUTH-473).\n */\n",
2102
+ "excerptTokens": [
2103
+ {
2104
+ "kind": "Content",
2105
+ "text": "mfaType?: "
2106
+ },
2107
+ {
2108
+ "kind": "Reference",
2109
+ "text": "MFA_TYPE",
2110
+ "canonicalReference": "@genesislcap/foundation-auth!MFA_TYPE:type"
2111
+ },
2112
+ {
2113
+ "kind": "Content",
2114
+ "text": ";"
2115
+ }
2116
+ ],
2117
+ "isReadonly": false,
2118
+ "isOptional": true,
2119
+ "releaseTag": "Public",
2120
+ "name": "mfaType",
2121
+ "propertyTypeTokenRange": {
2122
+ "startIndex": 1,
2123
+ "endIndex": 2
2124
+ }
2125
+ },
2098
2126
  {
2099
2127
  "kind": "PropertySignature",
2100
2128
  "canonicalReference": "@genesislcap/foundation-auth!AuthMachineContext#params:member",
@@ -9181,6 +9209,34 @@
9181
9209
  "name": "EVENT_LOGIN_AUTH_NACK",
9182
9210
  "preserveMemberOrder": false,
9183
9211
  "members": [
9212
+ {
9213
+ "kind": "PropertySignature",
9214
+ "canonicalReference": "@genesislcap/foundation-auth!EVENT_LOGIN_AUTH_NACK#MFA_TYPE:member",
9215
+ "docComment": "/**\n * MFA type when MFA is required or has failed (AUTH-473).\n */\n",
9216
+ "excerptTokens": [
9217
+ {
9218
+ "kind": "Content",
9219
+ "text": "readonly MFA_TYPE?: "
9220
+ },
9221
+ {
9222
+ "kind": "Reference",
9223
+ "text": "MFA_TYPE",
9224
+ "canonicalReference": "@genesislcap/foundation-auth!MFA_TYPE:type"
9225
+ },
9226
+ {
9227
+ "kind": "Content",
9228
+ "text": ";"
9229
+ }
9230
+ ],
9231
+ "isReadonly": true,
9232
+ "isOptional": true,
9233
+ "releaseTag": "Public",
9234
+ "name": "MFA_TYPE",
9235
+ "propertyTypeTokenRange": {
9236
+ "startIndex": 1,
9237
+ "endIndex": 2
9238
+ }
9239
+ },
9184
9240
  {
9185
9241
  "kind": "PropertySignature",
9186
9242
  "canonicalReference": "@genesislcap/foundation-auth!EVENT_LOGIN_AUTH_NACK#REFRESH_AUTH_TOKEN:member",
@@ -9278,7 +9334,7 @@
9278
9334
  },
9279
9335
  {
9280
9336
  "kind": "Content",
9281
- "text": "{\n readonly USER_NAME: string;\n readonly PASSWORD: string;\n } | {\n readonly USER_NAME: string;\n readonly REFRESH_AUTH_TOKEN: string;\n } | {\n readonly SSO_TOKEN: string;\n } | {\n readonly JWT: string;\n readonly DOMAIN: string;\n } | {\n readonly MFA_CODE: string;\n }"
9337
+ "text": "{\n readonly USER_NAME: string;\n readonly PASSWORD: string;\n } | {\n readonly USER_NAME: string;\n readonly REFRESH_AUTH_TOKEN: string;\n } | {\n readonly SSO_TOKEN: string;\n } | {\n readonly JWT: string;\n readonly DOMAIN: string;\n } | {\n readonly MFA_CODE?: string;\n readonly MFA_RESEND?: boolean;\n }"
9282
9338
  },
9283
9339
  {
9284
9340
  "kind": "Content",
@@ -11863,6 +11919,33 @@
11863
11919
  "endIndex": 2
11864
11920
  }
11865
11921
  },
11922
+ {
11923
+ "kind": "PropertySignature",
11924
+ "canonicalReference": "@genesislcap/foundation-auth!LoginNack#isMFAFailed:member",
11925
+ "docComment": "",
11926
+ "excerptTokens": [
11927
+ {
11928
+ "kind": "Content",
11929
+ "text": "readonly isMFAFailed: "
11930
+ },
11931
+ {
11932
+ "kind": "Content",
11933
+ "text": "boolean"
11934
+ },
11935
+ {
11936
+ "kind": "Content",
11937
+ "text": ";"
11938
+ }
11939
+ ],
11940
+ "isReadonly": true,
11941
+ "isOptional": false,
11942
+ "releaseTag": "Public",
11943
+ "name": "isMFAFailed",
11944
+ "propertyTypeTokenRange": {
11945
+ "startIndex": 1,
11946
+ "endIndex": 2
11947
+ }
11948
+ },
11866
11949
  {
11867
11950
  "kind": "PropertySignature",
11868
11951
  "canonicalReference": "@genesislcap/foundation-auth!LoginNack#isMFARequired:member",
@@ -11917,6 +12000,34 @@
11917
12000
  "endIndex": 2
11918
12001
  }
11919
12002
  },
12003
+ {
12004
+ "kind": "PropertySignature",
12005
+ "canonicalReference": "@genesislcap/foundation-auth!LoginNack#mfaType:member",
12006
+ "docComment": "/**\n * MFA delivery type from AUTH-473 (`NOTIFY` | `QR_CODE`).\n */\n",
12007
+ "excerptTokens": [
12008
+ {
12009
+ "kind": "Content",
12010
+ "text": "readonly mfaType?: "
12011
+ },
12012
+ {
12013
+ "kind": "Reference",
12014
+ "text": "MFA_TYPE",
12015
+ "canonicalReference": "@genesislcap/foundation-auth!MFA_TYPE:type"
12016
+ },
12017
+ {
12018
+ "kind": "Content",
12019
+ "text": ";"
12020
+ }
12021
+ ],
12022
+ "isReadonly": true,
12023
+ "isOptional": true,
12024
+ "releaseTag": "Public",
12025
+ "name": "mfaType",
12026
+ "propertyTypeTokenRange": {
12027
+ "startIndex": 1,
12028
+ "endIndex": 2
12029
+ }
12030
+ },
11920
12031
  {
11921
12032
  "kind": "PropertySignature",
11922
12033
  "canonicalReference": "@genesislcap/foundation-auth!LoginNack#refreshAuthToken:member",
@@ -12726,10 +12837,36 @@
12726
12837
  "endIndex": 5
12727
12838
  }
12728
12839
  },
12840
+ {
12841
+ "kind": "TypeAlias",
12842
+ "canonicalReference": "@genesislcap/foundation-auth!MFA_TYPE:type",
12843
+ "docComment": "/**\n * MFA delivery mechanism returned on MFA_REQUIRED / MFA_FAILED NACKs (AUTH-473).\n *\n * @public\n */\n",
12844
+ "excerptTokens": [
12845
+ {
12846
+ "kind": "Content",
12847
+ "text": "export type MFA_TYPE = "
12848
+ },
12849
+ {
12850
+ "kind": "Content",
12851
+ "text": "'NOTIFY' | 'QR_CODE'"
12852
+ },
12853
+ {
12854
+ "kind": "Content",
12855
+ "text": ";"
12856
+ }
12857
+ ],
12858
+ "fileUrlPath": "src/dto/EVENT_LOGIN_AUTH_NACK.ts",
12859
+ "releaseTag": "Public",
12860
+ "name": "MFA_TYPE",
12861
+ "typeTokenRange": {
12862
+ "startIndex": 1,
12863
+ "endIndex": 2
12864
+ }
12865
+ },
12729
12866
  {
12730
12867
  "kind": "TypeAlias",
12731
12868
  "canonicalReference": "@genesislcap/foundation-auth!MFACredentials:type",
12732
- "docComment": "/**\n * @remarks\n *\n * Will be sourced from MFA_CODE in url params.\n *\n * @public\n */\n",
12869
+ "docComment": "/**\n * @remarks\n *\n * Will be sourced from MFA_CODE in url params. Set `mfaResend` to request a new code without submitting one (AUTH-473 / FUI-2625).\n *\n * @public\n */\n",
12733
12870
  "excerptTokens": [
12734
12871
  {
12735
12872
  "kind": "Content",
@@ -12755,7 +12892,7 @@
12755
12892
  },
12756
12893
  {
12757
12894
  "kind": "Content",
12758
- "text": ";\n mfaToken: string;\n}"
12895
+ "text": ";\n mfaToken?: string;\n mfaResend?: boolean;\n}"
12759
12896
  },
12760
12897
  {
12761
12898
  "kind": "Content",
@@ -423,6 +423,10 @@ export declare interface AuthMachineContext extends MachineContext {
423
423
  * The user, either authenticated or anonymous.
424
424
  */
425
425
  user: User;
426
+ /**
427
+ * MFA delivery type from the latest MFA_REQUIRED / MFA_FAILED NACK (AUTH-473).
428
+ */
429
+ mfaType?: MFA_TYPE;
426
430
  }
427
431
 
428
432
  /**
@@ -1264,7 +1268,9 @@ export declare interface EVENT_LOGIN_AUTH extends MESSAGE {
1264
1268
  readonly JWT: string;
1265
1269
  readonly DOMAIN: string;
1266
1270
  } | {
1267
- readonly MFA_CODE: string;
1271
+ readonly MFA_CODE?: string;
1272
+ /** When true, requests a new MFA code (AUTH-473). */
1273
+ readonly MFA_RESEND?: boolean;
1268
1274
  };
1269
1275
  }
1270
1276
 
@@ -1314,6 +1320,10 @@ export declare interface EVENT_LOGIN_AUTH_NACK extends NACK {
1314
1320
  */
1315
1321
  readonly REFRESH_AUTH_TOKEN: string;
1316
1322
  readonly REFRESH_TOKEN_EXPIRATION_MINS: number;
1323
+ /**
1324
+ * MFA type when MFA is required or has failed (AUTH-473).
1325
+ */
1326
+ readonly MFA_TYPE?: MFA_TYPE;
1317
1327
  }
1318
1328
 
1319
1329
  /**
@@ -2268,8 +2278,11 @@ export declare interface LoginNack extends Nack {
2268
2278
  readonly hasIncorrectCredentials: boolean;
2269
2279
  readonly maxTriesReached: boolean;
2270
2280
  readonly isMFARequired: boolean;
2281
+ readonly isMFAFailed: boolean;
2271
2282
  readonly hasPasswordExpired: boolean;
2272
2283
  readonly requiresTermsAndConditions: boolean;
2284
+ /** MFA delivery type from AUTH-473 (`NOTIFY` | `QR_CODE`). */
2285
+ readonly mfaType?: MFA_TYPE;
2273
2286
  }
2274
2287
 
2275
2288
  /**
@@ -2428,14 +2441,22 @@ export declare interface MessageMapper<TLookup extends MessageMapperLookup, K ex
2428
2441
  */
2429
2442
  export declare type MessageMapperLookup = Record<string, Mapper<unknown, unknown>>;
2430
2443
 
2444
+ /**
2445
+ * MFA delivery mechanism returned on MFA_REQUIRED / MFA_FAILED NACKs (AUTH-473).
2446
+ * @public
2447
+ */
2448
+ export declare type MFA_TYPE = 'NOTIFY' | 'QR_CODE';
2449
+
2431
2450
  /**
2432
2451
  * @remarks
2433
2452
  * Will be sourced from MFA_CODE in url params.
2453
+ * Set `mfaResend` to request a new code without submitting one (AUTH-473 / FUI-2625).
2434
2454
  * @public
2435
2455
  */
2436
2456
  export declare type MFACredentials = {
2437
2457
  type: CredentialType_2 & CredentialType_2.MFA;
2438
- mfaToken: string;
2458
+ mfaToken?: string;
2459
+ mfaResend?: boolean;
2439
2460
  };
2440
2461
 
2441
2462
  /**
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@genesislcap/foundation-auth",
3
3
  "description": "Genesis Foundation Auth",
4
- "version": "15.46.0",
4
+ "version": "15.46.2-FUI-2625.1",
5
5
  "license": "SEE LICENSE IN license.txt",
6
6
  "main": "dist/esm/index.js",
7
7
  "types": "dist/foundation-auth.d.ts",
@@ -134,24 +134,24 @@
134
134
  }
135
135
  },
136
136
  "devDependencies": {
137
- "@genesislcap/foundation-testing": "15.46.0",
138
- "@genesislcap/genx": "15.46.0",
139
- "@genesislcap/ts-builder": "15.46.0",
140
- "@genesislcap/uvu-playwright-builder": "15.46.0",
141
- "@genesislcap/vite-builder": "15.46.0",
142
- "@genesislcap/webpack-builder": "15.46.0"
137
+ "@genesislcap/foundation-testing": "15.46.2-FUI-2625.1",
138
+ "@genesislcap/genx": "15.46.2-FUI-2625.1",
139
+ "@genesislcap/ts-builder": "15.46.2-FUI-2625.1",
140
+ "@genesislcap/uvu-playwright-builder": "15.46.2-FUI-2625.1",
141
+ "@genesislcap/vite-builder": "15.46.2-FUI-2625.1",
142
+ "@genesislcap/webpack-builder": "15.46.2-FUI-2625.1"
143
143
  },
144
144
  "dependencies": {
145
- "@genesislcap/foundation-comms": "15.46.0",
146
- "@genesislcap/foundation-events": "15.46.0",
147
- "@genesislcap/foundation-i18n": "15.46.0",
148
- "@genesislcap/foundation-logger": "15.46.0",
149
- "@genesislcap/foundation-state-machine": "15.46.0",
150
- "@genesislcap/foundation-store": "15.46.0",
151
- "@genesislcap/foundation-ui": "15.46.0",
152
- "@genesislcap/foundation-user": "15.46.0",
153
- "@genesislcap/foundation-utils": "15.46.0",
154
- "@genesislcap/foundation-zero": "15.46.0",
145
+ "@genesislcap/foundation-comms": "15.46.2-FUI-2625.1",
146
+ "@genesislcap/foundation-events": "15.46.2-FUI-2625.1",
147
+ "@genesislcap/foundation-i18n": "15.46.2-FUI-2625.1",
148
+ "@genesislcap/foundation-logger": "15.46.2-FUI-2625.1",
149
+ "@genesislcap/foundation-state-machine": "15.46.2-FUI-2625.1",
150
+ "@genesislcap/foundation-store": "15.46.2-FUI-2625.1",
151
+ "@genesislcap/foundation-ui": "15.46.2-FUI-2625.1",
152
+ "@genesislcap/foundation-user": "15.46.2-FUI-2625.1",
153
+ "@genesislcap/foundation-utils": "15.46.2-FUI-2625.1",
154
+ "@genesislcap/foundation-zero": "15.46.2-FUI-2625.1",
155
155
  "@microsoft/fast-components": "2.30.6",
156
156
  "@microsoft/fast-element": "1.14.0",
157
157
  "@microsoft/fast-foundation": "2.50.0",