Gayathri Vijayan and GitHub
fb35fdd3c7
feat: add recovery codes to user repository ( #11702 )
...
# Which Problems Are Solved
Adds a repository implementation to add/remove recovery codes to the
users relational table.
# How the Problems Are Solved
This is achieved by:
* adding the following columns to the users table: `recovery_codes`,
`recovery_code_last_successful_check`, `recovery_code_failed_attempts`
* adding the `RecoveryCodes` field to the `HumanUser` domain with fields
to set recovery `codes`, `lastSuccessfullyCheckedAt` timestamp, and
`failedAttempts`
* setting `recoveryCodes` in the `Get` user query statement to return a
json object with details related to the recovery codes
* adding the repository-layer implementation to add/remove recovery
codes and set fields related to recovery code checks.
* adding projection reducers to handle the following events:
`HumanRecoveryCodesAddedEvent`, `HumanRecoveryCodesRemovedEvent`,
`HumanRecoveryCodeCheckSucceededEvent`, and
`HumanRecoveryCodeCheckFailedEvent`
* adding unit tests
# Additional Changes
* fix the error message when the recovery is empty in
`internal/command/user_human_recovery_codes.go`
* add a new error message for empty recovery code during checks in
`en.yaml`
# Additional Context
- Closes https://github.com/zitadel/zitadel/issues/11212
- Follow-up: integration tests for the reducers will be added in a
different PR after this
[PR](https://github.com/zitadel/zitadel/pull/11478 ) is merged
2026-02-26 19:22:37 +01:00
..
2024-03-14 09:56:23 +00:00
2023-12-08 15:30:55 +01:00
2024-12-19 10:37:46 +01:00
2025-02-13 16:03:05 +00:00
2023-07-06 08:38:13 +02:00
2023-12-08 15:30:55 +01:00
2023-12-08 15:30:55 +01:00
2023-12-08 15:30:55 +01:00
2025-12-29 13:35:53 +00:00
2025-12-29 13:35:53 +00:00
2025-12-19 07:03:27 +01:00
2025-09-03 15:29:00 +00:00
2024-02-22 17:25:47 +00:00
2024-02-22 17:25:47 +00:00
2024-09-11 08:24:00 +00:00
2023-12-08 15:30:55 +01:00
2024-04-03 10:43:43 +00:00
2024-05-16 07:07:56 +02:00
2023-12-08 15:30:55 +01:00
2023-12-08 15:30:55 +01:00
2025-07-29 08:58:42 +00:00
2025-04-02 16:53:06 +02:00
2024-12-06 11:32:53 +00:00
2024-10-02 18:34:19 +03:00
2025-04-30 12:58:10 +00:00
2025-04-30 12:58:10 +00:00
2023-12-08 15:30:55 +01:00
2023-12-08 15:30:55 +01:00
2025-10-28 13:23:54 +00:00
2025-10-28 13:23:54 +00:00
2025-10-28 13:23:54 +00:00
2025-11-11 09:06:45 +01:00
2025-06-18 13:24:39 +02:00
2026-02-23 16:03:47 +01:00
2026-02-10 20:25:39 +01:00
2023-12-08 15:30:55 +01:00
2025-09-24 13:19:09 +00:00
2025-08-27 09:07:13 +00:00
2025-08-27 09:07:13 +00:00
2023-12-08 15:30:55 +01:00
2026-02-10 20:25:39 +01:00
2023-12-08 18:22:07 +01:00
2023-12-08 15:30:55 +01:00
2025-10-22 08:40:21 +00:00
2023-12-08 15:30:55 +01:00
2023-12-08 15:30:55 +01:00
2026-02-05 10:51:09 +00:00
2026-02-05 10:51:09 +00:00
2024-03-08 07:52:59 +00:00
2024-01-08 15:26:30 +00:00
2026-01-26 14:52:15 +00:00
2023-12-08 15:30:55 +01:00
2024-07-31 18:00:38 +03:00
2024-07-31 18:00:38 +03:00
2026-01-26 14:52:15 +00:00
2024-08-14 14:18:14 +00:00
2023-12-08 15:30:55 +01:00
2025-09-22 06:19:34 +00:00
2025-09-22 06:19:34 +00:00
2024-02-22 17:25:47 +00:00
2024-02-22 17:25:47 +00:00
2024-04-10 09:14:55 +00:00
2024-04-10 09:14:55 +00:00
2025-06-06 08:48:29 +00:00
2026-02-10 20:25:39 +01:00
2025-06-06 08:48:29 +00:00
2023-12-08 15:30:55 +01:00
2023-12-08 15:30:55 +01:00
2023-12-08 15:30:55 +01:00
2023-12-08 15:30:55 +01:00
2024-01-25 17:28:20 +01:00
2023-11-20 17:21:08 +02:00
2024-02-22 17:25:47 +00:00
2024-09-11 10:53:55 +00:00
2024-11-11 11:28:27 +00:00
2024-11-11 11:28:27 +00:00
2023-12-08 15:30:55 +01:00
2023-12-08 15:30:55 +01:00
2023-12-08 15:30:55 +01:00
2023-12-08 15:30:55 +01:00
2025-10-22 08:40:21 +00:00
2023-12-08 15:30:55 +01:00
2023-12-08 15:30:55 +01:00
2024-03-08 07:52:59 +00:00
2024-01-08 15:26:30 +00:00
2025-10-14 10:15:16 +01:00
2024-02-22 17:25:47 +00:00
2024-02-22 17:25:47 +00:00
2025-09-05 09:54:34 +01:00
2023-12-08 15:30:55 +01:00
2023-12-08 15:30:55 +01:00
2025-07-29 15:56:21 +02:00
2025-07-29 15:56:21 +02:00
2023-12-08 15:30:55 +01:00
2023-12-08 15:30:55 +01:00
2023-12-08 15:30:55 +01:00
2023-12-08 15:30:55 +01:00
2024-05-13 16:01:50 +02:00
2024-05-13 16:01:50 +02:00
2024-03-08 07:52:59 +00:00
2024-03-08 07:52:59 +00:00
2025-11-14 11:04:16 +00:00
2023-12-08 15:30:55 +01:00
2025-01-15 11:22:16 +01:00
2025-01-17 16:16:26 +01:00
2025-01-17 16:16:26 +01:00
2025-10-01 09:47:04 +00:00
2025-10-01 09:47:04 +00:00
2023-12-08 15:30:55 +01:00
2023-12-08 15:30:55 +01:00
2023-12-08 15:30:55 +01:00
2023-12-08 15:30:55 +01:00
2025-08-13 13:51:30 +00:00
2025-09-03 15:29:00 +00:00
2026-02-23 16:03:47 +01:00
2024-03-27 15:48:22 +02:00
2023-12-08 15:30:55 +01:00
2025-09-05 09:54:34 +01:00
2023-12-08 15:30:55 +01:00
2023-12-06 10:30:56 +00:00
2024-12-19 11:11:40 +00:00
2024-12-19 11:11:40 +00:00
2023-12-08 15:30:55 +01:00
2023-12-08 15:30:55 +01:00
2024-02-28 10:21:11 +00:00
2026-02-20 10:21:01 +00:00
2026-02-20 10:21:01 +00:00
2026-02-20 10:21:01 +00:00
2025-12-11 12:33:19 +01:00
2025-09-08 11:00:04 +00:00
2025-09-08 11:00:04 +00:00
2026-01-27 15:11:56 +01:00
2026-01-27 15:11:56 +01:00
2026-02-05 10:51:09 +00:00
2026-02-05 10:51:09 +00:00
2025-12-29 13:35:53 +00:00
2025-12-29 13:35:53 +00:00
2025-11-24 06:44:48 +00:00
2025-11-24 06:44:48 +00:00
2024-03-21 10:31:06 +00:00
2024-03-21 10:31:06 +00:00
2024-02-22 17:25:47 +00:00
2025-09-18 09:50:56 +00:00
2023-12-08 15:30:55 +01:00
2025-06-04 07:17:23 +00:00
2026-02-26 19:22:37 +01:00
2024-08-28 19:46:45 +00:00
2024-08-28 19:46:45 +00:00
2025-01-29 15:12:31 +00:00
2025-06-06 08:48:29 +00:00
2024-08-16 11:41:09 +00:00