Issue:
Include single purpose token and single purpose JWT auth

Create single purpose token and single purpose JWT auth that will server as generic for intermediate tokens and can be used for different cases, during TOTP, change passwords, accept invite etc.

Resolution:
<think>
PR Context:
- Title: feat(user): add single purpose token and auth
- Merged: 2024-04-29T12:39:08Z
- Files changed: 3 files
- Commits: 6 commits

Implementation approach:
## Type of Change
<!-- Put an `x` in the boxes that apply -->

- [ ] Bugfix
- [x] New feature
- [x] Enhancement
- [ ] Refactoring
- [ ] Dependency updates
- [ ] Documentation
- [ ] CI/CD

## Description
Add single purpose token and authentication for single purpose token. This token will serves as a intermediate token and used to perform a certain action only.

### Additional Changes

- [ ] This PR modifies the API contract
- [ ] This PR modifies the database schema
- [ ] This 
</think>

To implement this, you'll need to modify:


**Detailed Implementation:**


**Commit 1:** feat(user): add single purpose token and auth (#4470)
Files to modify:


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

**crates/router/src/services/authentication.rs**
  Add:
    - function: private::authenticate_and_fetch
    - struct: pub::SinglePurposeJWTAuth
    - impl: impl AuthenticateAndFetch<UserFromSinglePurposeToken, A> for SinglePurposeJWTAuth

**crates/router/src/services/authentication/blacklist.rs**
  Add:
    - function: private::check_in_blacklist
    - impl: impl BlackList for SinglePurposeToken