Issue:
feat: add support to verify using recovery code

Create a new endpoint that adds,
- support to verify 2FA with recovery code
- the provided recovery code can be used only once 
- then verification can be done with the remaining recovery codes only next time ( there are total 8 set of recovery codes that are being generated when configuring 2FA)

Resolution:
<think>
PR Context:
- Title: feat(users): add support to verify 2FA using recovery code
- Merged: 2024-05-23T13:56:26Z
- Files changed: 20 files
- Commits: 12 commits

Implementation approach:
## Type of Change
<!-- Put an `x` in the boxes that apply -->

- [ ] Bugfix
- [x] New feature
- [ ] Enhancement
- [ ] Refactoring
- [ ] Dependency updates
- [ ] Documentation
- [ ] CI/CD

## Description
The PR adds support to verify 2FA using recovery code, in case TOTP is lost 

### Additional Changes

- [x] This PR modifies the API contract
- [ ] This PR modifies the database schema
- [ ] This PR modifies application configuration/environment variables

<!--
Provide links 
</think>

To implement this, you'll need to modify:


**Detailed Implementation:**


**Commit 1:** feat(users): add support to verify 2FA using recovery code (#4737)
Co-authored-by: hyperswitch-bot[b
Files to modify:


**crates/api_models/src/events/user.rs**
  Modify existing code

**crates/api_models/src/user.rs**
  Add:
    - struct: pub::VerifyRecoveryCodeRequest

**crates/router/src/configs/settings.rs**
  Modify existing code

**crates/router/src/consts/user.rs**
  Modify existing code

**crates/router/src/core/errors/user.rs**
  Modify existing code

**crates/router/src/core/user.rs**
  Add:
    - function: pub::verify_recovery_code

**crates/router/src/routes/app.rs**
  Modify existing code

**crates/router/src/routes/lock_utils.rs**
  Modify existing code

**crates/router/src/routes/user.rs**
  Add:
    - function: pub::verify_recovery_code

**crates/router/src/types/domain/user.rs**
  Modify existing code

**crates/router/src/utils/user/password.rs**
  Add:
    - function: pub::get_index_for_correct_recovery_code

**crates/router/src/utils/user/two_factor_auth.rs**
  Add:
    - function: pub::insert_recovery_code_in_redis

**crates/router_env/src/logger/types.rs**
  Modify existing code