@ambushsoftworks/nestjs-auth-graphql 0.17.0-rc.1 → 0.17.0

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.
Files changed (50) hide show
  1. package/CHANGELOG.md +127 -0
  2. package/README.md +63 -8
  3. package/dist/dto/passkey.dto.d.ts +8 -0
  4. package/dist/dto/passkey.dto.d.ts.map +1 -1
  5. package/dist/exceptions/passkey.exceptions.d.ts +9 -0
  6. package/dist/exceptions/passkey.exceptions.d.ts.map +1 -1
  7. package/dist/exceptions/passkey.exceptions.js +25 -1
  8. package/dist/exceptions/passkey.exceptions.js.map +1 -1
  9. package/dist/exceptions/password-reset.exceptions.d.ts +3 -0
  10. package/dist/exceptions/password-reset.exceptions.d.ts.map +1 -1
  11. package/dist/exceptions/password-reset.exceptions.js +7 -1
  12. package/dist/exceptions/password-reset.exceptions.js.map +1 -1
  13. package/dist/exceptions/step-up.exceptions.d.ts +1 -1
  14. package/dist/exceptions/step-up.exceptions.d.ts.map +1 -1
  15. package/dist/exceptions/step-up.exceptions.js +1 -5
  16. package/dist/exceptions/step-up.exceptions.js.map +1 -1
  17. package/dist/exceptions/verification.exceptions.d.ts +4 -1
  18. package/dist/exceptions/verification.exceptions.d.ts.map +1 -1
  19. package/dist/exceptions/verification.exceptions.js +14 -6
  20. package/dist/exceptions/verification.exceptions.js.map +1 -1
  21. package/dist/resolvers/base-auth.resolver.d.ts +3 -2
  22. package/dist/resolvers/base-auth.resolver.d.ts.map +1 -1
  23. package/dist/resolvers/base-auth.resolver.js +6 -2
  24. package/dist/resolvers/base-auth.resolver.js.map +1 -1
  25. package/dist/resolvers/oauth.controller.d.ts.map +1 -1
  26. package/dist/resolvers/oauth.controller.js +8 -5
  27. package/dist/resolvers/oauth.controller.js.map +1 -1
  28. package/dist/services/auth.service.d.ts +2 -0
  29. package/dist/services/auth.service.d.ts.map +1 -1
  30. package/dist/services/auth.service.js +92 -113
  31. package/dist/services/auth.service.js.map +1 -1
  32. package/dist/services/brute-force-protection.service.d.ts +4 -0
  33. package/dist/services/brute-force-protection.service.d.ts.map +1 -1
  34. package/dist/services/brute-force-protection.service.js +9 -3
  35. package/dist/services/brute-force-protection.service.js.map +1 -1
  36. package/dist/services/passkey-signup-token.service.d.ts +5 -0
  37. package/dist/services/passkey-signup-token.service.d.ts.map +1 -1
  38. package/dist/services/passkey-signup-token.service.js +18 -0
  39. package/dist/services/passkey-signup-token.service.js.map +1 -1
  40. package/dist/services/passkey.service.d.ts +9 -0
  41. package/dist/services/passkey.service.d.ts.map +1 -1
  42. package/dist/services/passkey.service.js +36 -9
  43. package/dist/services/passkey.service.js.map +1 -1
  44. package/dist/services/step-up.service.d.ts.map +1 -1
  45. package/dist/services/step-up.service.js +8 -1
  46. package/dist/services/step-up.service.js.map +1 -1
  47. package/dist/services/verification.service.d.ts.map +1 -1
  48. package/dist/services/verification.service.js +9 -8
  49. package/dist/services/verification.service.js.map +1 -1
  50. package/package.json +1 -1
package/CHANGELOG.md CHANGED
@@ -27,6 +27,133 @@ for buried obligations. **The marker was introduced in 0.9.0 and has not been
27
27
  retro-applied**, so it is reliable from 0.9.0 onward only. Convention adopted
28
28
  from `@ambushsoftworks/nestjs-payments-graphql`.
29
29
 
30
+ ## [0.17.0] - 2026-10-02
31
+
32
+ Passwordless sign-up with a passkey, a step-up token on sign-in, and fixes for
33
+ **account enumeration in password reset and email verification** (present in
34
+ every earlier version). Identical to `0.17.0-rc.2`, which LiftIQ piloted on
35
+ staging and an Android device. This entry is the summary for anyone coming from
36
+ 0.16.x; the two release-candidate entries below have the detail.
37
+
38
+ ### ⚠ Security
39
+
40
+ - **Password reset and email verification revealed which addresses have
41
+ accounts**: through a lock or social-only error, a cooldown only real accounts
42
+ had, account checks before the code, a password-strength error, response
43
+ timing, and "already verified". Every signed-out, email-keyed flow now answers
44
+ alike for every address. **If you are on 0.16.x or earlier, upgrade.**
45
+
46
+ ### ⚠ External configuration required
47
+
48
+ Only for passwordless sign-up:
49
+ - `PasskeyChallenge.userId` must not be a foreign key to users
50
+ (`assertPasskeyRepositoryContract` checks it).
51
+ - `IUserRepository.create` must store the `emailVerified` it is given, and
52
+ `IUserRepository.delete` must work.
53
+ - The email service needs `sendSignupCodeEmail` (`ConfigurableEmailService` has
54
+ it with the default renderer).
55
+
56
+ ### Added
57
+
58
+ - **Passwordless sign-up**: `performStartPasskeySignup` →
59
+ `performVerifyPasskeySignupCode` (returns a verified `signupId`) →
60
+ `performCompletePasskeySignup`, plus `performPasskeySignupOptions` to retry
61
+ the passkey step without the code. The account exists only once its passkey
62
+ does.
63
+ - **`stepUp.issueOnLogin`**: fresh sign-ins return a step-up token, so an app can
64
+ offer "Create a passkey?" without a second proof. Never from a refresh or the
65
+ biometric login.
66
+ - **`retryAfterSeconds` on every `RATE_LIMIT_EXCEEDED`.**
67
+ - New codes: `PASSWORD_RESET_CODE_INVALID`, `EMAIL_VERIFICATION_CODE_INVALID`,
68
+ the `PASSKEY_SIGNUP_*` family; `VERIFICATION_CODE_*` now used for signed-in
69
+ code checks.
70
+
71
+ ### Changed — breaking
72
+
73
+ - **Code failures are no longer `UNAUTHENTICATED`.** Password reset and
74
+ verify-email each report one code for every failure (no remaining-attempts
75
+ count); verify-phone and step-up by email report `VERIFICATION_CODE_INVALID` /
76
+ `_EXPIRED` / `_EXHAUSTED`. Update any client logic that matched
77
+ `UNAUTHENTICATED` or the old messages.
78
+ - `requestPasswordReset` no longer throws for a locked account, and its cooldown
79
+ applies to every address. `verifyEmail` refuses an already verified address.
80
+ `resendVerificationEmail` answers alike for every address.
81
+ - A misconfigured per-realm `verification.baseUrl` is logged through
82
+ `IAuthLogger.error` instead of failing the request.
83
+ - `PasskeyChallengePurpose` includes `'signup'`; `StepUpMethod` includes
84
+ `'oauth'`; `AuthRateLimitException` requires `retryAfterSeconds`.
85
+
86
+ ### Upgrading from an RC
87
+
88
+ From rc.1: read the rc.2 entry (codes changed, and step 3 of sign-up needs the
89
+ verified `signupId`). From rc.2: nothing changes.
90
+
91
+ ## [0.17.0-rc.2] - 2026-10-02
92
+
93
+ Fixes from LiftIQ's pilot of rc.1, chiefly **account enumeration in password
94
+ reset and email verification**. Those flaws are older than 0.17: every released
95
+ version has them. Still a release candidate on `next`.
96
+
97
+ ### ⚠ Security
98
+
99
+ - **Password reset revealed which addresses have accounts.**
100
+ `requestPasswordReset` answered an existing account differently: a locked one
101
+ with `AccountLockedException`, and a second request within a minute with a 429
102
+ (the cooldown lived on the user record, so only real accounts had one). It also
103
+ answered a real account slower, because it waited for the email.
104
+ `resetPassword` looked the account up before checking the code: an unknown
105
+ address, a locked account, a social-only account and a weak new password each
106
+ answered differently to a junk code. Now:
107
+ - one answer for every address from `requestPasswordReset`, a locked or
108
+ social-only account included (no code sent to either);
109
+ - the 60-second cooldown per email address, for every address, in the rate
110
+ limiter;
111
+ - the email sent in the background;
112
+ - in `resetPassword`, password strength checked first (for everyone; it no
113
+ longer spends a valid code), then the code, then account state;
114
+ - **every** reset refusal is `PASSWORD_RESET_CODE_INVALID` (400), with no
115
+ remaining-attempts count, since anyone can request a reset for any address
116
+ first and probe.
117
+ - **Email verification revealed the same.** `verifyEmail` and
118
+ `resendVerificationEmail` answered `Invalid email address` for an unknown
119
+ address and `Email is already verified` for a verified one. Now resend answers
120
+ alike for every address (per-email cooldown in the rate limiter, send in the
121
+ background), and verify refuses every failure with
122
+ `EMAIL_VERIFICATION_CODE_INVALID` (400), an already verified address included.
123
+
124
+ ### Changed — breaking
125
+
126
+ - **Code failures are no longer `UNAUTHENTICATED`.** Clients read that as an
127
+ expired session and refresh-and-retry. Verify-phone and step-up by email now
128
+ report `VERIFICATION_CODE_INVALID` (with `remainingAttempts`),
129
+ `VERIFICATION_CODE_EXPIRED` or `VERIFICATION_CODE_EXHAUSTED`; password reset
130
+ and verify-email report their single codes above.
131
+ - **Passwordless sign-up: step 2 returns a verified `signupId`, and completion
132
+ requires it.** Keep the one `performVerifyPasskeySignupCode` returns. With it,
133
+ the new `performPasskeySignupOptions({ signupId })` fetches fresh passkey
134
+ options without the code and without spending an attempt, for a cancelled or
135
+ timed-out device sheet. The verified id keeps the original 15-minute expiry.
136
+ Completion failures are now `PASSKEY_SIGNUP_CHALLENGE_EXPIRED` (fetch new
137
+ options) or `PASSKEY_SIGNUP_VERIFICATION_FAILED`, not a bare
138
+ `Passkey registration failed`; and `PASSKEY_SIGNUP_CODE_REQUIRED` for an
139
+ unverified id.
140
+ - A misconfigured per-realm `verification.baseUrl` no longer fails the
141
+ `requestPasswordReset` / `resendVerificationEmail` call (only real accounts
142
+ could reach it, so the error revealed them). It is logged through
143
+ `IAuthLogger.error` and no unusable email is sent.
144
+
145
+ ### Added
146
+
147
+ - **`retryAfterSeconds` on every `RATE_LIMIT_EXCEEDED`**: login and OAuth IP
148
+ limits, passkey options, passwordless sign-up, step-up.
149
+ `AuthRateLimitException` now requires it.
150
+ `BruteForceProtectionService.checkIpRateLimitWithRetry` returns it;
151
+ `checkIpRateLimit` keeps its boolean.
152
+ - `PasswordResetCodeInvalidException`, `EmailVerificationCodeInvalidException`,
153
+ `PasskeySignupCodeRequiredException`,
154
+ `PasskeySignupChallengeExpiredException`,
155
+ `PasskeySignupVerificationFailedException`.
156
+
30
157
  ## [0.17.0-rc.1] - 2026-10-01
31
158
 
32
159
  Passwordless sign-up with a passkey, and an optional step-up token on sign-in.
package/README.md CHANGED
@@ -288,7 +288,8 @@ When cookie auth is enabled, pass the GraphQL `context` so tokens are set as Htt
288
288
  | `performRenamePasskey(user, input, context?)` | Rename one |
289
289
  | `performRemovePasskey(user, input, context?)` | Remove one (refused for the last way in) |
290
290
  | `performStartPasskeySignup(input, context?)` | Passwordless sign-up, step 1: email a code (public) |
291
- | `performVerifyPasskeySignupCode(input, context?)` | Step 2: check the code, get passkey creation options (public) |
291
+ | `performVerifyPasskeySignupCode(input, context?)` | Step 2: check the code, get passkey creation options and a verified `signupId` (public) |
292
+ | `performPasskeySignupOptions(input, context?)` | Fresh options for a verified sign-up, no code (public) |
292
293
  | `performCompletePasskeySignup(input, context?)` | Step 3: create the account with its passkey and sign in (public) |
293
294
 
294
295
  **Other:**
@@ -925,7 +926,11 @@ It sits beside `useFactory` because Nest fixes a module's controllers before asy
925
926
  | 409 | `OAUTH_ACCOUNT_ALREADY_LINKED` | The account has a different ID linked for this provider | `provider` |
926
927
  | 403 | `ACCOUNT_LOCKED` | Brute-force lockout | `remainingLockoutTime` (seconds) |
927
928
  | 403 | `ACCOUNT_INACTIVE` | The account is suspended or deleted | -- |
928
- | 429 | `RATE_LIMIT_EXCEEDED` | The client IP exceeded `bruteForce.ipRateLimit` | -- |
929
+ | 429 | `RATE_LIMIT_EXCEEDED` | The client IP exceeded `bruteForce.ipRateLimit` | `retryAfterSeconds` |
930
+
931
+ Every `RATE_LIMIT_EXCEEDED` the package raises, here and over GraphQL (login,
932
+ passkey, sign-up, step-up), carries `retryAfterSeconds`, the time left in the
933
+ window, for a countdown.
929
934
 
930
935
  With realms enabled, a request without a realm gets `400 Realm required` first. Before 0.10.0 the lockout, inactive-account, rate-limit and unconfigured-provider cases answered 500.
931
936
 
@@ -1356,11 +1361,18 @@ abandoned sign-up leaves nothing behind.
1356
1361
 
1357
1362
  ```
1358
1363
  performStartPasskeySignup({ email }) -> { signupId, expiresAt } (emails a 6-digit code)
1359
- performVerifyPasskeySignupCode({ signupId, code }) -> { challengeId, optionsJson }
1364
+ performVerifyPasskeySignupCode({ signupId, code }) -> { challengeId, optionsJson, signupId } (verified)
1360
1365
  client: navigator.credentials.create(...)
1361
1366
  performCompletePasskeySignup({ signupId, challengeId, responseJson, name? }) -> AuthResponse
1367
+
1368
+ after a cancelled or timed-out device sheet (PASSKEY_SIGNUP_CHALLENGE_EXPIRED):
1369
+ performPasskeySignupOptions({ signupId }) -> { challengeId, optionsJson, signupId } (no code)
1362
1370
  ```
1363
1371
 
1372
+ **Keep the `signupId` step 2 returns**: it is marked as having passed its code,
1373
+ with the same expiry. Completion and fresh options accept only that one, and
1374
+ neither spends a code attempt, so a cancelled sheet costs the user nothing.
1375
+
1364
1376
  The result is an account with no password, `emailVerified: true`, and one
1365
1377
  passkey, signed in exactly as `performLogin` signs in (cookies included).
1366
1378
  Available when passkeys are configured and the email service has
@@ -1384,8 +1396,19 @@ renderer); otherwise `PASSKEY_SIGNUP_UNAVAILABLE`.
1384
1396
  | `PASSKEY_SIGNUP_CODE_EXHAUSTED` | 429 | Third attempt used |
1385
1397
  | `PASSKEY_SIGNUP_EXPIRED` | 400 | `signupId` expired, malformed, or from another realm |
1386
1398
  | `PASSKEY_SIGNUP_EMAIL_TAKEN` | 409 | The email gained an account during the sign-up (only reachable with the code) |
1399
+ | `PASSKEY_SIGNUP_CODE_REQUIRED` | 400 | Options or completion with a `signupId` whose code was not checked: use the one step 2 returned |
1400
+ | `PASSKEY_SIGNUP_CHALLENGE_EXPIRED` | 400 | The passkey options expired or were used: fetch new ones with `performPasskeySignupOptions` |
1401
+ | `PASSKEY_SIGNUP_VERIFICATION_FAILED` | 400 | The created passkey did not verify |
1387
1402
  | `PASSKEY_SIGNUP_UNAVAILABLE` | 503 | No passkeys, or no `sendSignupCodeEmail` |
1388
1403
 
1404
+ **An expired challenge can leave an orphaned passkey.** If the options expire
1405
+ (`passkey.registrationTimeoutSeconds`, 300 s by default) while the device's
1406
+ passkey sheet is still open, the platform may already have saved the passkey
1407
+ when the app gets `PASSKEY_SIGNUP_CHALLENGE_EXPIRED`. The retry then creates a
1408
+ second one, and the first stays in the user's password manager with no account
1409
+ behind it. Neither side can prevent this; it is rare at the default timeout.
1410
+ Reported by LiftIQ on Android.
1411
+
1389
1412
  **What your repositories must do for it:**
1390
1413
  - `IUserRepository.create` must store the `emailVerified` it is given (the
1391
1414
  OAuth sign-up already relies on this).
@@ -1577,27 +1600,59 @@ None of this is configurable, and most of it is invisible until it bites:
1577
1600
  | Code | 6 digits, HMAC-SHA256 hashed at rest, never logged |
1578
1601
  | Expiry | 15 minutes |
1579
1602
  | Attempts | **3**, then the code is destroyed and a new one must be requested |
1580
- | Per-user cooldown | 60 seconds, tracked on `passwordResetSentAt` |
1603
+ | Per-email cooldown | 60 seconds, for **every** address, in the rate limiter (`retryAfterSeconds` on the 429) |
1581
1604
  | Per-IP limit | 5 per hour, checked **before** the user lookup |
1605
+ | Sending | In the background, so a real account does not answer slower than an unknown one |
1606
+ | New-password strength | Checked first, for everyone, before the account or the code |
1582
1607
  | On success | **every refresh token for that user is revoked** — all devices are signed out |
1583
1608
  | Comparison | constant-time |
1584
1609
 
1585
1610
  The IP limit runs before the lookup deliberately: checking it afterwards would
1586
1611
  make a request for a non-existent address measurably faster than one for a real
1587
1612
  address, which is the enumeration leak the generic message exists to prevent.
1613
+ The same reasoning moved the cooldown off the user record and the email into
1614
+ the background in 0.17.0.
1588
1615
 
1589
1616
  #### The response never tells you what happened
1590
1617
 
1591
1618
  `requestPasswordReset` returns the same success payload whether the address does
1592
- not exist, belongs to a social-login account, or was actually sent a code. That
1593
- is deliberate — the mutation is reachable unauthenticated, so any distinguishable
1594
- result is an oracle for whether an address is registered.
1619
+ not exist, belongs to a social-login or a locked account, or was actually sent a
1620
+ code. `resetPassword` refuses **every** failure with the same
1621
+ `PASSWORD_RESET_CODE_INVALID` (400): an unknown address, a wrong, expired or
1622
+ exhausted code, a locked or social-only account; no remaining-attempts count.
1623
+ That is deliberate — both are reachable unauthenticated, and anyone may request a
1624
+ reset for any address first, so any distinguishable result is an oracle for
1625
+ whether an address is registered. Show "Code invalid or expired. Request a new
1626
+ one." Until 0.17.0 a locked account, a social-only account, the cooldown and
1627
+ the password-strength check each answered differently.
1595
1628
 
1596
1629
  If you need to know, read your `IAuthLogger`. A skip is reported as
1597
- `PASSWORD_RESET_REQUESTED` with `result: 'SKIPPED_SOCIAL_ONLY'` and the user ID.
1630
+ `PASSWORD_RESET_REQUESTED` with `result: 'SKIPPED_SOCIAL_ONLY'` or
1631
+ `'SKIPPED_LOCKED'` and the user ID.
1598
1632
  An operator tool that creates accounts and invites by reset should assert on that
1599
1633
  event, not on the mutation's return value.
1600
1634
 
1635
+ #### Verify-email works the same way
1636
+
1637
+ `performVerifyEmail(email, code)` and `performResendVerificationEmail(email)`
1638
+ are keyed by an address and reachable signed out, so since 0.17.0 they follow
1639
+ the same rules: resend answers alike for every address (unknown and already
1640
+ verified ones are sent nothing), with the per-email cooldown in the rate limiter
1641
+ and the send in the background; verify refuses every failure with
1642
+ `EMAIL_VERIFICATION_CODE_INVALID` (400), including an address that is already
1643
+ verified.
1644
+
1645
+ #### Which code a verification failure reports
1646
+
1647
+ None is `UNAUTHENTICATED`, which clients treat as an expired session to refresh
1648
+ and retry.
1649
+
1650
+ | Flow | Caller | Failures |
1651
+ |---|---|---|
1652
+ | Password reset | Signed out, keyed by email | `PASSWORD_RESET_CODE_INVALID`, always |
1653
+ | Verify email | Signed out, keyed by email | `EMAIL_VERIFICATION_CODE_INVALID`, always |
1654
+ | Verify phone, step-up by email | Signed in | `VERIFICATION_CODE_INVALID` (with `remainingAttempts`), `VERIFICATION_CODE_EXPIRED`, `VERIFICATION_CODE_EXHAUSTED` |
1655
+
1601
1656
  #### Accounts with no password
1602
1657
 
1603
1658
  An account is refused only if it has an actual social identity — `googleId`,
@@ -51,6 +51,14 @@ export interface IAuthVerifyPasskeySignupCodeInput {
51
51
  signupId: string;
52
52
  code: string;
53
53
  }
54
+ export interface IAuthPasskeySignupOptionsResponse {
55
+ challengeId: string;
56
+ optionsJson: string;
57
+ signupId: string;
58
+ }
59
+ export interface IAuthPasskeySignupOptionsInput {
60
+ signupId: string;
61
+ }
54
62
  export interface IAuthCompletePasskeySignupInput {
55
63
  signupId: string;
56
64
  challengeId: string;
@@ -1 +1 @@
1
- {"version":3,"file":"passkey.dto.d.ts","sourceRoot":"","sources":["../../src/dto/passkey.dto.ts"],"names":[],"mappings":"AAcA,eAAO,MAAM,2BAA2B,QAAS,CAAC;AAGlD,MAAM,WAAW,2BAA2B;IAC1C,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,oCAAoC;IAEnD,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,mCAAmC;IAClD,WAAW,EAAE,MAAM,CAAC;IAEpB,YAAY,EAAE,MAAM,CAAC;IAErB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,qCAAqC;IACpD,WAAW,EAAE,MAAM,CAAC;IAEpB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,uBAAuB;IACtC,YAAY,EAAE,MAAM,CAAC;IACrB,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,uBAAuB;IACtC,YAAY,EAAE,MAAM,CAAC;CACtB;AAOD,MAAM,WAAW,wBAAwB;IACvC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,mBAAmB,CAAC,EAAE,MAAM,CAAC;CAC9B;AAED,MAAM,WAAW,wBAAwB;IACvC,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,IAAI,CAAC;CACjB;AAGD,MAAM,WAAW,YAAY;IAC3B,YAAY,EAAE,MAAM,CAAC;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,cAAc,GAAG,aAAa,CAAC;IAC3C,QAAQ,EAAE,OAAO,CAAC;IAClB,SAAS,EAAE,IAAI,CAAC;IAChB,UAAU,EAAE,IAAI,GAAG,IAAI,CAAC;CACzB;AAGD,MAAM,WAAW,4BAA4B;IAC3C,KAAK,EAAE,MAAM,CAAC;CACf;AAMD,MAAM,WAAW,yBAAyB;IACxC,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,IAAI,CAAC;CACjB;AAGD,MAAM,WAAW,iCAAiC;IAChD,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;CACd;AAGD,MAAM,WAAW,+BAA+B;IAC9C,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IAEpB,YAAY,EAAE,MAAM,CAAC;IAErB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf"}
1
+ {"version":3,"file":"passkey.dto.d.ts","sourceRoot":"","sources":["../../src/dto/passkey.dto.ts"],"names":[],"mappings":"AAcA,eAAO,MAAM,2BAA2B,QAAS,CAAC;AAGlD,MAAM,WAAW,2BAA2B;IAC1C,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,oCAAoC;IAEnD,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,mCAAmC;IAClD,WAAW,EAAE,MAAM,CAAC;IAEpB,YAAY,EAAE,MAAM,CAAC;IAErB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,qCAAqC;IACpD,WAAW,EAAE,MAAM,CAAC;IAEpB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,uBAAuB;IACtC,YAAY,EAAE,MAAM,CAAC;IACrB,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,uBAAuB;IACtC,YAAY,EAAE,MAAM,CAAC;CACtB;AAOD,MAAM,WAAW,wBAAwB;IACvC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,mBAAmB,CAAC,EAAE,MAAM,CAAC;CAC9B;AAED,MAAM,WAAW,wBAAwB;IACvC,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,IAAI,CAAC;CACjB;AAGD,MAAM,WAAW,YAAY;IAC3B,YAAY,EAAE,MAAM,CAAC;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,cAAc,GAAG,aAAa,CAAC;IAC3C,QAAQ,EAAE,OAAO,CAAC;IAClB,SAAS,EAAE,IAAI,CAAC;IAChB,UAAU,EAAE,IAAI,GAAG,IAAI,CAAC;CACzB;AAGD,MAAM,WAAW,4BAA4B;IAC3C,KAAK,EAAE,MAAM,CAAC;CACf;AAMD,MAAM,WAAW,yBAAyB;IACxC,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,IAAI,CAAC;CACjB;AAGD,MAAM,WAAW,iCAAiC;IAChD,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;CACd;AAOD,MAAM,WAAW,iCAAiC;IAChD,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAGD,MAAM,WAAW,8BAA8B;IAE7C,QAAQ,EAAE,MAAM,CAAC;CAClB;AAGD,MAAM,WAAW,+BAA+B;IAE9C,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IAEpB,YAAY,EAAE,MAAM,CAAC;IAErB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf"}
@@ -23,4 +23,13 @@ export declare class PasskeySignupEmailTakenException extends GraphQLError {
23
23
  export declare class PasskeySignupUnavailableException extends GraphQLError {
24
24
  constructor();
25
25
  }
26
+ export declare class PasskeySignupCodeRequiredException extends GraphQLError {
27
+ constructor();
28
+ }
29
+ export declare class PasskeySignupChallengeExpiredException extends GraphQLError {
30
+ constructor();
31
+ }
32
+ export declare class PasskeySignupVerificationFailedException extends GraphQLError {
33
+ constructor();
34
+ }
26
35
  //# sourceMappingURL=passkey.exceptions.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"passkey.exceptions.d.ts","sourceRoot":"","sources":["../../src/exceptions/passkey.exceptions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAgBvC,qBAAa,oCAAqC,SAAQ,YAAY;;CAMrE;AAOD,qBAAa,iCAAkC,SAAQ,YAAY;;CAMlE;AAQD,qBAAa,mCAAoC,SAAQ,YAAY;;CAMpE;AAQD,qBAAa,iCAAkC,SAAQ,YAAY;;CAMlE;AAMD,qBAAa,mCAAoC,SAAQ,YAAY;;CAMpE;AAMD,qBAAa,6BAA8B,SAAQ,YAAY;;CAM9D;AAOD,qBAAa,gCAAiC,SAAQ,YAAY;;CAMjE;AAQD,qBAAa,iCAAkC,SAAQ,YAAY;;CAMlE"}
1
+ {"version":3,"file":"passkey.exceptions.d.ts","sourceRoot":"","sources":["../../src/exceptions/passkey.exceptions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAgBvC,qBAAa,oCAAqC,SAAQ,YAAY;;CAMrE;AAOD,qBAAa,iCAAkC,SAAQ,YAAY;;CAMlE;AAQD,qBAAa,mCAAoC,SAAQ,YAAY;;CAMpE;AAQD,qBAAa,iCAAkC,SAAQ,YAAY;;CAMlE;AAMD,qBAAa,mCAAoC,SAAQ,YAAY;;CAMpE;AAMD,qBAAa,6BAA8B,SAAQ,YAAY;;CAM9D;AAOD,qBAAa,gCAAiC,SAAQ,YAAY;;CAMjE;AAQD,qBAAa,iCAAkC,SAAQ,YAAY;;CAMlE;AAOD,qBAAa,kCAAmC,SAAQ,YAAY;;CAMnE;AAOD,qBAAa,sCAAuC,SAAQ,YAAY;;CAMvE;AAOD,qBAAa,wCAAyC,SAAQ,YAAY;;CAMzE"}
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.PasskeySignupUnavailableException = exports.PasskeySignupEmailTakenException = exports.PasskeySignupExpiredException = exports.PasskeySignupCodeExhaustedException = exports.PasskeySignupCodeInvalidException = exports.CannotRemoveLastAuthMethodException = exports.PasskeyAlreadyRegisteredException = exports.PasskeyAuthenticationFailedException = void 0;
3
+ exports.PasskeySignupVerificationFailedException = exports.PasskeySignupChallengeExpiredException = exports.PasskeySignupCodeRequiredException = exports.PasskeySignupUnavailableException = exports.PasskeySignupEmailTakenException = exports.PasskeySignupExpiredException = exports.PasskeySignupCodeExhaustedException = exports.PasskeySignupCodeInvalidException = exports.CannotRemoveLastAuthMethodException = exports.PasskeyAlreadyRegisteredException = exports.PasskeyAuthenticationFailedException = void 0;
4
4
  const graphql_1 = require("graphql");
5
5
  class PasskeyAuthenticationFailedException extends graphql_1.GraphQLError {
6
6
  constructor() {
@@ -66,4 +66,28 @@ class PasskeySignupUnavailableException extends graphql_1.GraphQLError {
66
66
  }
67
67
  }
68
68
  exports.PasskeySignupUnavailableException = PasskeySignupUnavailableException;
69
+ class PasskeySignupCodeRequiredException extends graphql_1.GraphQLError {
70
+ constructor() {
71
+ super('Enter the emailed code first', {
72
+ extensions: { code: 'PASSKEY_SIGNUP_CODE_REQUIRED', statusCode: 400 },
73
+ });
74
+ }
75
+ }
76
+ exports.PasskeySignupCodeRequiredException = PasskeySignupCodeRequiredException;
77
+ class PasskeySignupChallengeExpiredException extends graphql_1.GraphQLError {
78
+ constructor() {
79
+ super('The passkey request expired. Try again', {
80
+ extensions: { code: 'PASSKEY_SIGNUP_CHALLENGE_EXPIRED', statusCode: 400 },
81
+ });
82
+ }
83
+ }
84
+ exports.PasskeySignupChallengeExpiredException = PasskeySignupChallengeExpiredException;
85
+ class PasskeySignupVerificationFailedException extends graphql_1.GraphQLError {
86
+ constructor() {
87
+ super('The passkey could not be verified', {
88
+ extensions: { code: 'PASSKEY_SIGNUP_VERIFICATION_FAILED', statusCode: 400 },
89
+ });
90
+ }
91
+ }
92
+ exports.PasskeySignupVerificationFailedException = PasskeySignupVerificationFailedException;
69
93
  //# sourceMappingURL=passkey.exceptions.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"passkey.exceptions.js","sourceRoot":"","sources":["../../src/exceptions/passkey.exceptions.ts"],"names":[],"mappings":";;;AAAA,qCAAuC;AAgBvC,MAAa,oCAAqC,SAAQ,sBAAY;IACpE;QACE,KAAK,CAAC,+BAA+B,EAAE;YACrC,UAAU,EAAE,EAAE,IAAI,EAAE,+BAA+B,EAAE,UAAU,EAAE,GAAG,EAAE;SACvE,CAAC,CAAC;IACL,CAAC;CACF;AAND,oFAMC;AAOD,MAAa,iCAAkC,SAAQ,sBAAY;IACjE;QACE,KAAK,CAAC,oCAAoC,EAAE;YAC1C,UAAU,EAAE,EAAE,IAAI,EAAE,4BAA4B,EAAE,UAAU,EAAE,GAAG,EAAE;SACpE,CAAC,CAAC;IACL,CAAC;CACF;AAND,8EAMC;AAQD,MAAa,mCAAoC,SAAQ,sBAAY;IACnE;QACE,KAAK,CAAC,wCAAwC,EAAE;YAC9C,UAAU,EAAE,EAAE,IAAI,EAAE,gCAAgC,EAAE,UAAU,EAAE,GAAG,EAAE;SACxE,CAAC,CAAC;IACL,CAAC;CACF;AAND,kFAMC;AAQD,MAAa,iCAAkC,SAAQ,sBAAY;IACjE;QACE,KAAK,CAAC,uBAAuB,EAAE;YAC7B,UAAU,EAAE,EAAE,IAAI,EAAE,6BAA6B,EAAE,UAAU,EAAE,GAAG,EAAE;SACrE,CAAC,CAAC;IACL,CAAC;CACF;AAND,8EAMC;AAMD,MAAa,mCAAoC,SAAQ,sBAAY;IACnE;QACE,KAAK,CAAC,2DAA2D,EAAE;YACjE,UAAU,EAAE,EAAE,IAAI,EAAE,+BAA+B,EAAE,UAAU,EAAE,GAAG,EAAE;SACvE,CAAC,CAAC;IACL,CAAC;CACF;AAND,kFAMC;AAMD,MAAa,6BAA8B,SAAQ,sBAAY;IAC7D;QACE,KAAK,CAAC,uCAAuC,EAAE;YAC7C,UAAU,EAAE,EAAE,IAAI,EAAE,wBAAwB,EAAE,UAAU,EAAE,GAAG,EAAE;SAChE,CAAC,CAAC;IACL,CAAC;CACF;AAND,sEAMC;AAOD,MAAa,gCAAiC,SAAQ,sBAAY;IAChE;QACE,KAAK,CAAC,2CAA2C,EAAE;YACjD,UAAU,EAAE,EAAE,IAAI,EAAE,4BAA4B,EAAE,UAAU,EAAE,GAAG,EAAE;SACpE,CAAC,CAAC;IACL,CAAC;CACF;AAND,4EAMC;AAQD,MAAa,iCAAkC,SAAQ,sBAAY;IACjE;QACE,KAAK,CAAC,kCAAkC,EAAE;YACxC,UAAU,EAAE,EAAE,IAAI,EAAE,4BAA4B,EAAE,UAAU,EAAE,GAAG,EAAE;SACpE,CAAC,CAAC;IACL,CAAC;CACF;AAND,8EAMC"}
1
+ {"version":3,"file":"passkey.exceptions.js","sourceRoot":"","sources":["../../src/exceptions/passkey.exceptions.ts"],"names":[],"mappings":";;;AAAA,qCAAuC;AAgBvC,MAAa,oCAAqC,SAAQ,sBAAY;IACpE;QACE,KAAK,CAAC,+BAA+B,EAAE;YACrC,UAAU,EAAE,EAAE,IAAI,EAAE,+BAA+B,EAAE,UAAU,EAAE,GAAG,EAAE;SACvE,CAAC,CAAC;IACL,CAAC;CACF;AAND,oFAMC;AAOD,MAAa,iCAAkC,SAAQ,sBAAY;IACjE;QACE,KAAK,CAAC,oCAAoC,EAAE;YAC1C,UAAU,EAAE,EAAE,IAAI,EAAE,4BAA4B,EAAE,UAAU,EAAE,GAAG,EAAE;SACpE,CAAC,CAAC;IACL,CAAC;CACF;AAND,8EAMC;AAQD,MAAa,mCAAoC,SAAQ,sBAAY;IACnE;QACE,KAAK,CAAC,wCAAwC,EAAE;YAC9C,UAAU,EAAE,EAAE,IAAI,EAAE,gCAAgC,EAAE,UAAU,EAAE,GAAG,EAAE;SACxE,CAAC,CAAC;IACL,CAAC;CACF;AAND,kFAMC;AAQD,MAAa,iCAAkC,SAAQ,sBAAY;IACjE;QACE,KAAK,CAAC,uBAAuB,EAAE;YAC7B,UAAU,EAAE,EAAE,IAAI,EAAE,6BAA6B,EAAE,UAAU,EAAE,GAAG,EAAE;SACrE,CAAC,CAAC;IACL,CAAC;CACF;AAND,8EAMC;AAMD,MAAa,mCAAoC,SAAQ,sBAAY;IACnE;QACE,KAAK,CAAC,2DAA2D,EAAE;YACjE,UAAU,EAAE,EAAE,IAAI,EAAE,+BAA+B,EAAE,UAAU,EAAE,GAAG,EAAE;SACvE,CAAC,CAAC;IACL,CAAC;CACF;AAND,kFAMC;AAMD,MAAa,6BAA8B,SAAQ,sBAAY;IAC7D;QACE,KAAK,CAAC,uCAAuC,EAAE;YAC7C,UAAU,EAAE,EAAE,IAAI,EAAE,wBAAwB,EAAE,UAAU,EAAE,GAAG,EAAE;SAChE,CAAC,CAAC;IACL,CAAC;CACF;AAND,sEAMC;AAOD,MAAa,gCAAiC,SAAQ,sBAAY;IAChE;QACE,KAAK,CAAC,2CAA2C,EAAE;YACjD,UAAU,EAAE,EAAE,IAAI,EAAE,4BAA4B,EAAE,UAAU,EAAE,GAAG,EAAE;SACpE,CAAC,CAAC;IACL,CAAC;CACF;AAND,4EAMC;AAQD,MAAa,iCAAkC,SAAQ,sBAAY;IACjE;QACE,KAAK,CAAC,kCAAkC,EAAE;YACxC,UAAU,EAAE,EAAE,IAAI,EAAE,4BAA4B,EAAE,UAAU,EAAE,GAAG,EAAE;SACpE,CAAC,CAAC;IACL,CAAC;CACF;AAND,8EAMC;AAOD,MAAa,kCAAmC,SAAQ,sBAAY;IAClE;QACE,KAAK,CAAC,8BAA8B,EAAE;YACpC,UAAU,EAAE,EAAE,IAAI,EAAE,8BAA8B,EAAE,UAAU,EAAE,GAAG,EAAE;SACtE,CAAC,CAAC;IACL,CAAC;CACF;AAND,gFAMC;AAOD,MAAa,sCAAuC,SAAQ,sBAAY;IACtE;QACE,KAAK,CAAC,wCAAwC,EAAE;YAC9C,UAAU,EAAE,EAAE,IAAI,EAAE,kCAAkC,EAAE,UAAU,EAAE,GAAG,EAAE;SAC1E,CAAC,CAAC;IACL,CAAC;CACF;AAND,wFAMC;AAOD,MAAa,wCAAyC,SAAQ,sBAAY;IACxE;QACE,KAAK,CAAC,mCAAmC,EAAE;YACzC,UAAU,EAAE,EAAE,IAAI,EAAE,oCAAoC,EAAE,UAAU,EAAE,GAAG,EAAE;SAC5E,CAAC,CAAC;IACL,CAAC;CACF;AAND,4FAMC"}
@@ -5,4 +5,7 @@ export declare class PasswordResetRateLimitException extends CodedHttpException
5
5
  export declare class WeakPasswordException extends CodedHttpException {
6
6
  constructor(errors: string[]);
7
7
  }
8
+ export declare class PasswordResetCodeInvalidException extends CodedHttpException {
9
+ constructor();
10
+ }
8
11
  //# sourceMappingURL=password-reset.exceptions.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"password-reset.exceptions.d.ts","sourceRoot":"","sources":["../../src/exceptions/password-reset.exceptions.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAS5D,qBAAa,+BAAgC,SAAQ,kBAAkB;gBACzD,iBAAiB,EAAE,MAAM;CAUtC;AAYD,qBAAa,qBAAsB,SAAQ,kBAAkB;gBAC/C,MAAM,EAAE,MAAM,EAAE;CAU7B"}
1
+ {"version":3,"file":"password-reset.exceptions.d.ts","sourceRoot":"","sources":["../../src/exceptions/password-reset.exceptions.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAS5D,qBAAa,+BAAgC,SAAQ,kBAAkB;gBACzD,iBAAiB,EAAE,MAAM;CAUtC;AAYD,qBAAa,qBAAsB,SAAQ,kBAAkB;gBAC/C,MAAM,EAAE,MAAM,EAAE;CAU7B;AAUD,qBAAa,iCAAkC,SAAQ,kBAAkB;;CAOxE"}
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.WeakPasswordException = exports.PasswordResetRateLimitException = void 0;
3
+ exports.PasswordResetCodeInvalidException = exports.WeakPasswordException = exports.PasswordResetRateLimitException = void 0;
4
4
  const common_1 = require("@nestjs/common");
5
5
  const coded_http_exception_1 = require("./coded-http.exception");
6
6
  class PasswordResetRateLimitException extends coded_http_exception_1.CodedHttpException {
@@ -23,4 +23,10 @@ class WeakPasswordException extends coded_http_exception_1.CodedHttpException {
23
23
  }
24
24
  }
25
25
  exports.WeakPasswordException = WeakPasswordException;
26
+ class PasswordResetCodeInvalidException extends coded_http_exception_1.CodedHttpException {
27
+ constructor() {
28
+ super({ message: 'Invalid or expired reset code.', code: 'PASSWORD_RESET_CODE_INVALID' }, common_1.HttpStatus.BAD_REQUEST);
29
+ }
30
+ }
31
+ exports.PasswordResetCodeInvalidException = PasswordResetCodeInvalidException;
26
32
  //# sourceMappingURL=password-reset.exceptions.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"password-reset.exceptions.js","sourceRoot":"","sources":["../../src/exceptions/password-reset.exceptions.ts"],"names":[],"mappings":";;;AAAA,2CAA4C;AAC5C,iEAA4D;AAS5D,MAAa,+BAAgC,SAAQ,yCAAkB;IACrE,YAAY,iBAAyB;QACnC,KAAK,CACH;YACE,OAAO,EAAE,iDAAiD,iBAAiB,+BAA+B;YAC1G,IAAI,EAAE,2BAA2B;YACjC,iBAAiB;SAClB,EACD,mBAAU,CAAC,iBAAiB,CAC7B,CAAC;IACJ,CAAC;CACF;AAXD,0EAWC;AAYD,MAAa,qBAAsB,SAAQ,yCAAkB;IAC3D,YAAY,MAAgB;QAC1B,KAAK,CACH;YACE,OAAO,EAAE,8CAA8C;YACvD,IAAI,EAAE,eAAe;YACrB,MAAM;SACP,EACD,mBAAU,CAAC,WAAW,CACvB,CAAC;IACJ,CAAC;CACF;AAXD,sDAWC"}
1
+ {"version":3,"file":"password-reset.exceptions.js","sourceRoot":"","sources":["../../src/exceptions/password-reset.exceptions.ts"],"names":[],"mappings":";;;AAAA,2CAA4C;AAC5C,iEAA4D;AAS5D,MAAa,+BAAgC,SAAQ,yCAAkB;IACrE,YAAY,iBAAyB;QACnC,KAAK,CACH;YACE,OAAO,EAAE,iDAAiD,iBAAiB,+BAA+B;YAC1G,IAAI,EAAE,2BAA2B;YACjC,iBAAiB;SAClB,EACD,mBAAU,CAAC,iBAAiB,CAC7B,CAAC;IACJ,CAAC;CACF;AAXD,0EAWC;AAYD,MAAa,qBAAsB,SAAQ,yCAAkB;IAC3D,YAAY,MAAgB;QAC1B,KAAK,CACH;YACE,OAAO,EAAE,8CAA8C;YACvD,IAAI,EAAE,eAAe;YACrB,MAAM;SACP,EACD,mBAAU,CAAC,WAAW,CACvB,CAAC;IACJ,CAAC;CACF;AAXD,sDAWC;AAUD,MAAa,iCAAkC,SAAQ,yCAAkB;IACvE;QACE,KAAK,CACH,EAAE,OAAO,EAAE,gCAAgC,EAAE,IAAI,EAAE,6BAA6B,EAAE,EAClF,mBAAU,CAAC,WAAW,CACvB,CAAC;IACJ,CAAC;CACF;AAPD,8EAOC"}
@@ -6,7 +6,7 @@ export declare class StepUpUnavailableException extends GraphQLError {
6
6
  constructor(method?: string);
7
7
  }
8
8
  export declare class AuthRateLimitException extends GraphQLError {
9
- constructor(message: string, retryAfterSeconds?: number);
9
+ constructor(message: string, retryAfterSeconds: number);
10
10
  }
11
11
  export declare class StepUpFailedException extends GraphQLError {
12
12
  constructor();
@@ -1 +1 @@
1
- {"version":3,"file":"step-up.exceptions.d.ts","sourceRoot":"","sources":["../../src/exceptions/step-up.exceptions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAgBvC,qBAAa,uBAAwB,SAAQ,YAAY;;CAMxD;AAUD,qBAAa,0BAA2B,SAAQ,YAAY;gBAC9C,MAAM,CAAC,EAAE,MAAM;CAQ5B;AAMD,qBAAa,sBAAuB,SAAQ,YAAY;gBAC1C,OAAO,EAAE,MAAM,EAAE,iBAAiB,CAAC,EAAE,MAAM;CASxD;AAaD,qBAAa,qBAAsB,SAAQ,YAAY;;CAMtD"}
1
+ {"version":3,"file":"step-up.exceptions.d.ts","sourceRoot":"","sources":["../../src/exceptions/step-up.exceptions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAgBvC,qBAAa,uBAAwB,SAAQ,YAAY;;CAMxD;AAUD,qBAAa,0BAA2B,SAAQ,YAAY;gBAC9C,MAAM,CAAC,EAAE,MAAM;CAQ5B;AAQD,qBAAa,sBAAuB,SAAQ,YAAY;gBAC1C,OAAO,EAAE,MAAM,EAAE,iBAAiB,EAAE,MAAM;CAKvD;AAaD,qBAAa,qBAAsB,SAAQ,YAAY;;CAMtD"}
@@ -21,11 +21,7 @@ exports.StepUpUnavailableException = StepUpUnavailableException;
21
21
  class AuthRateLimitException extends graphql_1.GraphQLError {
22
22
  constructor(message, retryAfterSeconds) {
23
23
  super(message, {
24
- extensions: {
25
- code: 'RATE_LIMIT_EXCEEDED',
26
- statusCode: 429,
27
- ...(retryAfterSeconds !== undefined ? { retryAfterSeconds } : {}),
28
- },
24
+ extensions: { code: 'RATE_LIMIT_EXCEEDED', statusCode: 429, retryAfterSeconds },
29
25
  });
30
26
  }
31
27
  }
@@ -1 +1 @@
1
- {"version":3,"file":"step-up.exceptions.js","sourceRoot":"","sources":["../../src/exceptions/step-up.exceptions.ts"],"names":[],"mappings":";;;AAAA,qCAAuC;AAgBvC,MAAa,uBAAwB,SAAQ,sBAAY;IACvD;QACE,KAAK,CAAC,4BAA4B,EAAE;YAClC,UAAU,EAAE,EAAE,IAAI,EAAE,kBAAkB,EAAE,UAAU,EAAE,GAAG,EAAE;SAC1D,CAAC,CAAC;IACL,CAAC;CACF;AAND,0DAMC;AAUD,MAAa,0BAA2B,SAAQ,sBAAY;IAC1D,YAAY,MAAe;QACzB,KAAK,CACH,MAAM;YACJ,CAAC,CAAC,wBAAwB,MAAM,oCAAoC;YACpE,CAAC,CAAC,2DAA2D,EAC/D,EAAE,UAAU,EAAE,EAAE,IAAI,EAAE,qBAAqB,EAAE,UAAU,EAAE,GAAG,EAAE,EAAE,CACjE,CAAC;IACJ,CAAC;CACF;AATD,gEASC;AAMD,MAAa,sBAAuB,SAAQ,sBAAY;IACtD,YAAY,OAAe,EAAE,iBAA0B;QACrD,KAAK,CAAC,OAAO,EAAE;YACb,UAAU,EAAE;gBACV,IAAI,EAAE,qBAAqB;gBAC3B,UAAU,EAAE,GAAG;gBACf,GAAG,CAAC,iBAAiB,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,iBAAiB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aAClE;SACF,CAAC,CAAC;IACL,CAAC;CACF;AAVD,wDAUC;AAaD,MAAa,qBAAsB,SAAQ,sBAAY;IACrD;QACE,KAAK,CAAC,0BAA0B,EAAE;YAChC,UAAU,EAAE,EAAE,IAAI,EAAE,gBAAgB,EAAE,UAAU,EAAE,GAAG,EAAE;SACxD,CAAC,CAAC;IACL,CAAC;CACF;AAND,sDAMC"}
1
+ {"version":3,"file":"step-up.exceptions.js","sourceRoot":"","sources":["../../src/exceptions/step-up.exceptions.ts"],"names":[],"mappings":";;;AAAA,qCAAuC;AAgBvC,MAAa,uBAAwB,SAAQ,sBAAY;IACvD;QACE,KAAK,CAAC,4BAA4B,EAAE;YAClC,UAAU,EAAE,EAAE,IAAI,EAAE,kBAAkB,EAAE,UAAU,EAAE,GAAG,EAAE;SAC1D,CAAC,CAAC;IACL,CAAC;CACF;AAND,0DAMC;AAUD,MAAa,0BAA2B,SAAQ,sBAAY;IAC1D,YAAY,MAAe;QACzB,KAAK,CACH,MAAM;YACJ,CAAC,CAAC,wBAAwB,MAAM,oCAAoC;YACpE,CAAC,CAAC,2DAA2D,EAC/D,EAAE,UAAU,EAAE,EAAE,IAAI,EAAE,qBAAqB,EAAE,UAAU,EAAE,GAAG,EAAE,EAAE,CACjE,CAAC;IACJ,CAAC;CACF;AATD,gEASC;AAQD,MAAa,sBAAuB,SAAQ,sBAAY;IACtD,YAAY,OAAe,EAAE,iBAAyB;QACpD,KAAK,CAAC,OAAO,EAAE;YACb,UAAU,EAAE,EAAE,IAAI,EAAE,qBAAqB,EAAE,UAAU,EAAE,GAAG,EAAE,iBAAiB,EAAE;SAChF,CAAC,CAAC;IACL,CAAC;CACF;AAND,wDAMC;AAaD,MAAa,qBAAsB,SAAQ,sBAAY;IACrD;QACE,KAAK,CAAC,0BAA0B,EAAE;YAChC,UAAU,EAAE,EAAE,IAAI,EAAE,gBAAgB,EAAE,UAAU,EAAE,GAAG,EAAE;SACxD,CAAC,CAAC;IACL,CAAC;CACF;AAND,sDAMC"}
@@ -3,7 +3,7 @@ export declare class VerificationCodeExpiredException extends CodedHttpException
3
3
  constructor();
4
4
  }
5
5
  export declare class VerificationCodeInvalidException extends CodedHttpException {
6
- constructor(remainingAttempts: number);
6
+ constructor(remainingAttempts?: number);
7
7
  }
8
8
  export declare class VerificationCodeExhaustedException extends CodedHttpException {
9
9
  constructor();
@@ -11,4 +11,7 @@ export declare class VerificationCodeExhaustedException extends CodedHttpExcepti
11
11
  export declare class VerificationEmailRateLimitException extends CodedHttpException {
12
12
  constructor(retryAfterSeconds: number);
13
13
  }
14
+ export declare class EmailVerificationCodeInvalidException extends CodedHttpException {
15
+ constructor();
16
+ }
14
17
  //# sourceMappingURL=verification.exceptions.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"verification.exceptions.d.ts","sourceRoot":"","sources":["../../src/exceptions/verification.exceptions.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAE5D,qBAAa,gCAAiC,SAAQ,kBAAkB;;CAUvE;AAED,qBAAa,gCAAiC,SAAQ,kBAAkB;gBAC1D,iBAAiB,EAAE,MAAM;CAUtC;AAED,qBAAa,kCAAmC,SAAQ,kBAAkB;;CAUzE;AAED,qBAAa,mCAAoC,SAAQ,kBAAkB;gBAC7D,iBAAiB,EAAE,MAAM;CAUtC"}
1
+ {"version":3,"file":"verification.exceptions.d.ts","sourceRoot":"","sources":["../../src/exceptions/verification.exceptions.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAE5D,qBAAa,gCAAiC,SAAQ,kBAAkB;;CAUvE;AAED,qBAAa,gCAAiC,SAAQ,kBAAkB;gBAE1D,iBAAiB,CAAC,EAAE,MAAM;CAYvC;AAED,qBAAa,kCAAmC,SAAQ,kBAAkB;;CAUzE;AAED,qBAAa,mCAAoC,SAAQ,kBAAkB;gBAC7D,iBAAiB,EAAE,MAAM;CAUtC;AAQD,qBAAa,qCAAsC,SAAQ,kBAAkB;;CAO5E"}
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.VerificationEmailRateLimitException = exports.VerificationCodeExhaustedException = exports.VerificationCodeInvalidException = exports.VerificationCodeExpiredException = void 0;
3
+ exports.EmailVerificationCodeInvalidException = exports.VerificationEmailRateLimitException = exports.VerificationCodeExhaustedException = exports.VerificationCodeInvalidException = exports.VerificationCodeExpiredException = void 0;
4
4
  const common_1 = require("@nestjs/common");
5
5
  const coded_http_exception_1 = require("./coded-http.exception");
6
6
  class VerificationCodeExpiredException extends coded_http_exception_1.CodedHttpException {
@@ -14,11 +14,13 @@ class VerificationCodeExpiredException extends coded_http_exception_1.CodedHttpE
14
14
  exports.VerificationCodeExpiredException = VerificationCodeExpiredException;
15
15
  class VerificationCodeInvalidException extends coded_http_exception_1.CodedHttpException {
16
16
  constructor(remainingAttempts) {
17
- super({
18
- message: `Invalid verification code. ${remainingAttempts} attempt(s) remaining.`,
19
- code: 'VERIFICATION_CODE_INVALID',
20
- remainingAttempts,
21
- }, common_1.HttpStatus.UNAUTHORIZED);
17
+ super(remainingAttempts === undefined
18
+ ? { message: 'Invalid verification code.', code: 'VERIFICATION_CODE_INVALID' }
19
+ : {
20
+ message: `Invalid verification code. ${remainingAttempts} attempt(s) remaining.`,
21
+ code: 'VERIFICATION_CODE_INVALID',
22
+ remainingAttempts,
23
+ }, common_1.HttpStatus.UNAUTHORIZED);
22
24
  }
23
25
  }
24
26
  exports.VerificationCodeInvalidException = VerificationCodeInvalidException;
@@ -41,4 +43,10 @@ class VerificationEmailRateLimitException extends coded_http_exception_1.CodedHt
41
43
  }
42
44
  }
43
45
  exports.VerificationEmailRateLimitException = VerificationEmailRateLimitException;
46
+ class EmailVerificationCodeInvalidException extends coded_http_exception_1.CodedHttpException {
47
+ constructor() {
48
+ super({ message: 'Invalid or expired verification code.', code: 'EMAIL_VERIFICATION_CODE_INVALID' }, common_1.HttpStatus.BAD_REQUEST);
49
+ }
50
+ }
51
+ exports.EmailVerificationCodeInvalidException = EmailVerificationCodeInvalidException;
44
52
  //# sourceMappingURL=verification.exceptions.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"verification.exceptions.js","sourceRoot":"","sources":["../../src/exceptions/verification.exceptions.ts"],"names":[],"mappings":";;;AAAA,2CAA4C;AAC5C,iEAA4D;AAE5D,MAAa,gCAAiC,SAAQ,yCAAkB;IACtE;QACE,KAAK,CACH;YACE,OAAO,EAAE,2DAA2D;YACpE,IAAI,EAAE,2BAA2B;SAClC,EACD,mBAAU,CAAC,YAAY,CACxB,CAAC;IACJ,CAAC;CACF;AAVD,4EAUC;AAED,MAAa,gCAAiC,SAAQ,yCAAkB;IACtE,YAAY,iBAAyB;QACnC,KAAK,CACH;YACE,OAAO,EAAE,8BAA8B,iBAAiB,wBAAwB;YAChF,IAAI,EAAE,2BAA2B;YACjC,iBAAiB;SAClB,EACD,mBAAU,CAAC,YAAY,CACxB,CAAC;IACJ,CAAC;CACF;AAXD,4EAWC;AAED,MAAa,kCAAmC,SAAQ,yCAAkB;IACxE;QACE,KAAK,CACH;YACE,OAAO,EAAE,sDAAsD;YAC/D,IAAI,EAAE,6BAA6B;SACpC,EACD,mBAAU,CAAC,iBAAiB,CAC7B,CAAC;IACJ,CAAC;CACF;AAVD,gFAUC;AAED,MAAa,mCAAoC,SAAQ,yCAAkB;IACzE,YAAY,iBAAyB;QACnC,KAAK,CACH;YACE,OAAO,EAAE,eAAe,iBAAiB,0CAA0C;YACnF,IAAI,EAAE,+BAA+B;YACrC,iBAAiB;SAClB,EACD,mBAAU,CAAC,iBAAiB,CAC7B,CAAC;IACJ,CAAC;CACF;AAXD,kFAWC"}
1
+ {"version":3,"file":"verification.exceptions.js","sourceRoot":"","sources":["../../src/exceptions/verification.exceptions.ts"],"names":[],"mappings":";;;AAAA,2CAA4C;AAC5C,iEAA4D;AAE5D,MAAa,gCAAiC,SAAQ,yCAAkB;IACtE;QACE,KAAK,CACH;YACE,OAAO,EAAE,2DAA2D;YACpE,IAAI,EAAE,2BAA2B;SAClC,EACD,mBAAU,CAAC,YAAY,CACxB,CAAC;IACJ,CAAC;CACF;AAVD,4EAUC;AAED,MAAa,gCAAiC,SAAQ,yCAAkB;IAEtE,YAAY,iBAA0B;QACpC,KAAK,CACH,iBAAiB,KAAK,SAAS;YAC7B,CAAC,CAAC,EAAE,OAAO,EAAE,4BAA4B,EAAE,IAAI,EAAE,2BAA2B,EAAE;YAC9E,CAAC,CAAC;gBACE,OAAO,EAAE,8BAA8B,iBAAiB,wBAAwB;gBAChF,IAAI,EAAE,2BAA2B;gBACjC,iBAAiB;aAClB,EACL,mBAAU,CAAC,YAAY,CACxB,CAAC;IACJ,CAAC;CACF;AAdD,4EAcC;AAED,MAAa,kCAAmC,SAAQ,yCAAkB;IACxE;QACE,KAAK,CACH;YACE,OAAO,EAAE,sDAAsD;YAC/D,IAAI,EAAE,6BAA6B;SACpC,EACD,mBAAU,CAAC,iBAAiB,CAC7B,CAAC;IACJ,CAAC;CACF;AAVD,gFAUC;AAED,MAAa,mCAAoC,SAAQ,yCAAkB;IACzE,YAAY,iBAAyB;QACnC,KAAK,CACH;YACE,OAAO,EAAE,eAAe,iBAAiB,0CAA0C;YACnF,IAAI,EAAE,+BAA+B;YACrC,iBAAiB;SAClB,EACD,mBAAU,CAAC,iBAAiB,CAC7B,CAAC;IACJ,CAAC;CACF;AAXD,kFAWC;AAQD,MAAa,qCAAsC,SAAQ,yCAAkB;IAC3E;QACE,KAAK,CACH,EAAE,OAAO,EAAE,uCAAuC,EAAE,IAAI,EAAE,iCAAiC,EAAE,EAC7F,mBAAU,CAAC,WAAW,CACvB,CAAC;IACJ,CAAC;CACF;AAPD,sFAOC"}
@@ -24,7 +24,7 @@ import { IAuthLogger } from '../interfaces/auth-logger.interface';
24
24
  import { PasskeyService } from '../services/passkey.service';
25
25
  import { StepUpService } from '../services/step-up.service';
26
26
  import { StepUpMethod } from '../services/step-up-token.service';
27
- import { IAuthPasskey, IAuthPasskeyOptionsResponse, IAuthPasskeyRegistrationOptionsInput, IAuthReauthenticateInput, IAuthRemovePasskeyInput, IAuthRenamePasskeyInput, IAuthStepUpTokenResponse, IAuthVerifyPasskeyAuthenticationInput, IAuthVerifyPasskeyRegistrationInput, IAuthStartPasskeySignupInput, IAuthPasskeySignupStarted, IAuthVerifyPasskeySignupCodeInput, IAuthCompletePasskeySignupInput } from '../dto/passkey.dto';
27
+ import { IAuthPasskey, IAuthPasskeyOptionsResponse, IAuthPasskeyRegistrationOptionsInput, IAuthReauthenticateInput, IAuthRemovePasskeyInput, IAuthRenamePasskeyInput, IAuthStepUpTokenResponse, IAuthVerifyPasskeyAuthenticationInput, IAuthVerifyPasskeyRegistrationInput, IAuthStartPasskeySignupInput, IAuthPasskeySignupStarted, IAuthVerifyPasskeySignupCodeInput, IAuthCompletePasskeySignupInput, IAuthPasskeySignupOptionsResponse, IAuthPasskeySignupOptionsInput } from '../dto/passkey.dto';
28
28
  export declare abstract class BaseAuthResolver<T extends IAuthUser> {
29
29
  protected readonly authService: AuthService;
30
30
  protected readonly bruteForceProtection: BruteForceProtectionService;
@@ -76,7 +76,8 @@ export declare abstract class BaseAuthResolver<T extends IAuthUser> {
76
76
  protected performPasskeyAuthenticationOptions(context?: any): Promise<IAuthPasskeyOptionsResponse>;
77
77
  protected performVerifyPasskeyAuthentication(input: IAuthVerifyPasskeyAuthenticationInput, context?: any): Promise<AuthResponseBase<T>>;
78
78
  protected performStartPasskeySignup(input: IAuthStartPasskeySignupInput, context?: any): Promise<IAuthPasskeySignupStarted>;
79
- protected performVerifyPasskeySignupCode(input: IAuthVerifyPasskeySignupCodeInput, context?: any): Promise<IAuthPasskeyOptionsResponse>;
79
+ protected performVerifyPasskeySignupCode(input: IAuthVerifyPasskeySignupCodeInput, context?: any): Promise<IAuthPasskeySignupOptionsResponse>;
80
+ protected performPasskeySignupOptions(input: IAuthPasskeySignupOptionsInput, context?: any): Promise<IAuthPasskeySignupOptionsResponse>;
80
81
  protected performCompletePasskeySignup(input: IAuthCompletePasskeySignupInput, context?: any): Promise<AuthResponseBase<T>>;
81
82
  protected performListPasskeys(user: IAuthUser, context?: any): Promise<IAuthPasskey[]>;
82
83
  protected performRenamePasskey(user: IAuthUser, input: IAuthRenamePasskeyInput, context?: any): Promise<IAuthPasskey>;
@@ -1 +1 @@
1
- {"version":3,"file":"base-auth.resolver.d.ts","sourceRoot":"","sources":["../../src/resolvers/base-auth.resolver.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"base-auth.resolver.d.ts","sourceRoot":"","sources":["../../src/resolvers/base-auth.resolver.ts"],"names":[],"mappings":"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"}
@@ -263,8 +263,12 @@ let BaseAuthResolver = class BaseAuthResolver {
263
263
  return this.requireAuthPasskeys().startSignup({ email: input.email }, { realm: this.getRealmFromContext(context), ipAddress: this.authClientIp(context) });
264
264
  }
265
265
  async performVerifyPasskeySignupCode(input, context) {
266
- const { challengeId, options } = await this.requireAuthPasskeys().verifySignupCode({ signupId: input.signupId, code: input.code }, { realm: this.getRealmFromContext(context), ipAddress: this.authClientIp(context) });
267
- return { challengeId, optionsJson: JSON.stringify(options) };
266
+ const { challengeId, options, signupId } = await this.requireAuthPasskeys().verifySignupCode({ signupId: input.signupId, code: input.code }, { realm: this.getRealmFromContext(context), ipAddress: this.authClientIp(context) });
267
+ return { challengeId, optionsJson: JSON.stringify(options), signupId };
268
+ }
269
+ async performPasskeySignupOptions(input, context) {
270
+ const { challengeId, options } = await this.requireAuthPasskeys().signupOptions({ signupId: input.signupId }, { realm: this.getRealmFromContext(context), ipAddress: this.authClientIp(context) });
271
+ return { challengeId, optionsJson: JSON.stringify(options), signupId: input.signupId };
268
272
  }
269
273
  async performCompletePasskeySignup(input, context) {
270
274
  assertResponseSize(input.responseJson);