Issue:
refactor: Separate out recovery codes from TOTP

Even though recovery codes is dependent entity on TOTP. But the new findings suggest that TOTP is a part of entity called 2FA and TOTP is depended on the 2FA entity not the TOTP entity.

This will be more clear when we add multiple 2FAs like SMS OTP.

So, we want to separate out recovery codes from the TOTP. This means `begin_totp` should not return the recovery codes anymore.

Resolution:
<think>
PR Context:
- Title: feat(users): Add redis in Begin and Verify TOTP and create a new API that updates TOTP
- Merged: 2024-05-29T10:23:42Z
- Files changed: 10 files
- Commits: 5 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
<!-- Describe your changes in detail -->
- Begin TOTP will now insert the TOTP secret in redis instead of DB directly, which allows the old secret to stay if it exists and recovery codes are also removed from Begin TOTP.
- Verify TOTP will now send 200 OK and puts the timestamp in t
</think>

To implement this, you'll need to modify:


**Detailed Implementation:**


**Commit 1:** feat(users): Add redis in Begin and Verify TOTP and create a new API that updates TOTP (#4765)
Files to modify:


**crates/api_models/src/user.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**
  Modify existing 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::totp_update

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

**crates/router/src/utils/user/two_factor_auth.rs**
  Add:
    - function: pub::insert_totp_in_redis
    - function: pub::insert_totp_secret_in_redis
    - function: pub::get_totp_secret_from_redis
    - function: pub::delete_totp_secret_from_redis

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