Issue:
Force password reset

- Force user to change the password after certain amount of time.
- Force user to set password after user lands to dashboard without setting his/her password (invite flow).

Resolution:
<think>
PR Context:
- Title: feat(users): implement force set and force change password
- Merged: 2024-05-07T14:25:34Z
- Files changed: 25 files
- Commits: 12 commits

Implementation approach:
## Type of Change
<!-- Put an `x` in the boxes that apply -->

- [ ] Bugfix
- [x] New feature
- [x] Enhancement
- [x] Refactoring
- [ ] Dependency updates
- [ ] Documentation
- [ ] CI/CD

## Description
- Allow users to set password when newly signing in
- Allow users to force change password after specified duration of time

### Additional Changes

- [x] This PR modifies the API contract
- [x] This PR modifies the database schema
- [ ] This PR modifies application configurati
</think>

To implement this, you'll need to modify:


**Detailed Implementation:**


**Commit 1:** feat(users): implement force set and force change password (#4564)
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::RotatePasswordRequest

**crates/common_enums/src/enums.rs**
  Modify existing code

**crates/diesel_models/src/schema.rs**
  Modify existing code

**crates/diesel_models/src/user.rs**
  Modify existing code

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

**crates/router/src/configs/settings.rs**
  Add:
    - struct: pub::UserSettings

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

**crates/router/src/core/user.rs**
  Add:
    - function: private::rotate_password

**crates/router/src/db/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**
  Modify existing code

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

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

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