feat(users): handle email URLs for users in different tenancies

We will be sending emails to users in different tenancies, on clicking the email they should land on that particular tenant URL. 
For that we need tenant level user configs. And 'll be using it to generate emails.

<think>
PR Context:
- Title: feat(users): handle email url for users in different tenancies
- Merged: 2024-12-19T08:50:07Z
- Files changed: 12 files
- Commits: 9 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
- Add support for user in tenants configs.
- Handle email URLs for different tenancies


### Additional Changes

- [ ] This PR modifies the API contract
- [ ] This PR modifies the database schema
- [ ] This PR modifies application configuration/environment variables

<!--
P
</think>

To implement this, you'll need to modify:


**Detailed Implementation:**


**Commit 1:** feat(users): handle email url for users in different tenancies (#6809)
Files to modify:


**crates/external_services/src/email.rs**
  Modify existing code

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

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

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

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

**crates/router/src/services/email/types.rs**
  Add:
    - function: pub::get_base_url

**crates/router/src/workflows/api_key_expiry.rs**
  Modify existing code
{"issue_number": 6808, "pr_number": 6809, "commits_count": 1, "files_changed": 12, "response_length": 1395, "file_count": 9, "needs_breakdown": false}