Issue:
feat: Create API for TOTP Verification

To complete the TOTP Flow, there needs to be an API which needs to verify the totp entered by the user and give the next token and flow that user should go to enter into the dashboard.

Resolution:
<think>
PR Context:
- Title: feat(users): Create API to Verify TOTP
- Merged: 2024-05-09T06:15:51Z
- Files changed: 9 files
- Commits: 1 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 -->
This PR allows users to complete the TOTP flow.
It adds a new api `/user/totp/verify`, which will verify the totp entered by the user and mark the user totp status as set if it is in `InProgress`.

### Additional Changes

- [x] This PR mo
</think>

To implement this, you'll need to modify:


**Detailed Implementation:**


**Commit 1:** feat(users): Create API to Verify TOTP (#4597)
Files to modify:


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

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

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

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

**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_verify

**crates/router/src/types/domain/user.rs**
  Add:
    - function: pub::decrypt_and_get_totp_secret

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