[FEATURE] add permissions for operations in recon module

### Feature Description

Reconciliation module in HyperSwitch provides various operations. Every operation needs to permitted for the end user to use it.

As of today, recon has a single permission - which gives access to the entire recon module, this is not granular. Recon module's permission suite needs to be extended to be able to assign granular access for different operations.

### Possible Implementation

Add permissions for below operations

- Upload files - RW
- Run recon - RW
- View and update recon configs - RW
- View and add file processing - RW
- View Reports - R
- View Analytics - R

These are to be included in JWT in the response of `/recon/verify_token`

### Have you spent some time checking if this feature request has been raised before?

- [X] I checked and didn't find a similar issue

### Have you read the Contributing Guidelines?

- [X] I have read the [Contributing Guidelines](https://github.com/juspay/hyperswitch/blob/main/docs/CONTRIBUTING.md)

### Are you willing to submit a PR?

Yes, I am willing to submit a PR!
<think>
PR Context:
- Title: feat: add resources and granular permission groups for reconciliation
- Merged: 2024-12-04T09:55:05Z
- Files changed: 18 files
- Commits: 29 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
Described in #6524 

This PR includes below changes
- Extending resources enum (for specifying the resource being consumed from the dashboard)
- Extending granular permission groups for recon
- Populating `acl` field in the recon token

### Additional Changes

- [ ] This PR m
</think>

To implement this, you'll need to modify:


**Detailed Implementation:**


**Commit 1:** feat: add resources and granular permission groups for reconciliation (#6591)
Co-authored-by: hypers
Files to modify:


**crates/api_models/src/enums.rs**
  Add:
    - function: private::from
    - enum: pub::ReconPermissionScope
    - impl: impl From<PermissionScope> for ReconPermissionScope

**crates/api_models/src/events/recon.rs**
  Add:
    - function: private::get_api_event_type
    - impl: impl ApiEventMetric for VerifyTokenResponse

**crates/api_models/src/events/user.rs**
  Remove:
    - function: private::get_api_event_type
    - impl: impl ApiEventMetric for VerifyTokenResponse

**crates/api_models/src/recon.rs**
  Add:
    - struct: pub::VerifyTokenResponse

**crates/api_models/src/user.rs**
  Remove:
    - struct: pub::VerifyTokenResponse

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

**crates/router/src/core/recon.rs**
  Add:
    - function: pub::verify_recon_token

**crates/router/src/core/user.rs**
  Remove:
    - function: pub::verify_token

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

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

**crates/router/src/routes/user.rs**
  Remove:
    - function: pub::verify_recon_token

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

**crates/router/src/services/authorization/info.rs**
  Modify existing code

**crates/router/src/services/authorization/permission_groups.rs**
  Modify existing code

**crates/router/src/services/authorization/permissions.rs**
  Modify existing code

**crates/router/src/services/authorization/roles.rs**
  Add:
    - function: pub::get_recon_acl

**crates/router/src/services/authorization/roles/predefined_roles.rs**
  Modify existing code

**crates/router/src/services/email/types.rs**
  Modify existing code
{"issue_number": 6524, "pr_number": 6591, "commits_count": 1, "files_changed": 18, "response_length": 2832, "file_count": 20, "needs_breakdown": true}