Skip to content

Comments

Mailbox management dev branch #34

Draft
printminion-co wants to merge 23 commits intoionos-devfrom
feature/provider_mails_admin
Draft

Mailbox management dev branch #34
printminion-co wants to merge 23 commits intoionos-devfrom
feature/provider_mails_admin

Conversation

@printminion-co
Copy link

@printminion-co printminion-co commented Feb 12, 2026

Ref: NCW-134

…tionService, IonosAccountQueryServiceTest

implemented missing tests

Signed-off-by: Misha M.-Kupriyanov <kupriyanov@strato.de>
…251208083401

composer update ionos-productivity/ionos-mail-configuration-api-client

https://github.com/IONOS-Productivity/ionos-mail-configuration-api-client/releases/tag/2.0.0-20251208083401
Signed-off-by: Misha M.-Kupriyanov <kupriyanov@strato.de>
@printminion-co printminion-co force-pushed the feature/provider_mails_admin branch from 261d3e5 to d7fef5e Compare February 13, 2026 08:34
@printminion-co printminion-co added this to the ncw-4 milestone Feb 13, 2026
printminion-co and others added 15 commits February 19, 2026 13:51
…ice errors

Updated the error handling logic in ExternalProviderTab.vue to only check for 'SERVICE_ERROR' in the error data, since IONOS_API_ERROR is not used anymore.

Should be removed in a0abffc

Signed-off-by: Misha M.-Kupriyanov <kupriyanov@strato.de>
…lization in ExternalAccountsController

Signed-off-by: Misha M.-Kupriyanov <kupriyanov@strato.de>
…tructure

- Create src/components/provider/ directory for provider-related components
- Move ProviderAppPassword.vue to provider directory using git mv
- Update import in AccountSettings.vue to new path

This establishes the organizational structure for provider-specific UI components.

Signed-off-by: Misha M.-Kupriyanov <kupriyanov@strato.de>
…nResponse

Enhance the error handling in the ExternalAccountsController by using the exception code as the HTTP status. Default to 400 if the code is invalid, ensuring more accurate responses for client requests.

Signed-off-by: Misha M.-Kupriyanov <kupriyanov@strato.de>
…ditional logging

Ensure that ServiceException is re-thrown without extra logging to maintain clean error handling.

Signed-off-by: Misha M.-Kupriyanov <kupriyanov@strato.de>
…internal server URLs

This change introduces a method to sanitize error messages by replacing internal server URLs with a placeholder. This enhances security by preventing sensitive information from being exposed in error responses while preserving necessary debugging information.

Signed-off-by: Misha M.-Kupriyanov <kupriyanov@strato.de>
… providers for admin

This change introduces a new API endpoint for admins to fetch all enabled providers, allowing for better management of mailboxes across different providers. The endpoint is designed to return a JSON response with the relevant provider information.

The implementation includes error handling to ensure that any issues during the retrieval process are logged and a user-friendly error message is returned.

Signed-off-by: Misha M.-Kupriyanov <kupriyanov@strato.de>
…and admin endpoint

- Add getMailboxes() method to IMailAccountProvider interface
- Implement getMailboxes() in IonosProvider and IonosProviderFacade
- Create MailboxInfo DTO for enriched mailbox data
- Add IonosAccountQueryService for querying mailbox information
- Add indexMailboxes controller endpoint to expose mailboxes via API
- Add route for GET /api/admin/providers/{providerId}/mailboxes
- Include comprehensive unit tests for all components

The endpoint enriches mailbox data with user existence status and mail app
account details, facilitating better administration and overview capabilities.

Signed-off-by: Misha M.-Kupriyanov <kupriyanov@strato.de>
…ing IONOS accounts

This change enhances the email account deletion process by requiring the user to provide the email address associated with the account. It verifies that the provided email matches the account being deleted, preventing accidental deletions. If the email does not match, a warning is logged, and a ServiceException is thrown. This improves safety and user experience during account management.

Should be made in 917d38b

Signed-off-by: Misha M.-Kupriyanov <kupriyanov@strato.de>
…oxes

- Add destroyMailbox() controller method in ExternalAccountsController
- Implement email verification for mailbox deletion safety
- Delete both provider mailbox and associated local mail app account
- Add route for DELETE /api/admin/providers/{providerId}/mailboxes/{userId}
- Include comprehensive unit tests for deletion scenarios

The endpoint requires email verification to prevent accidental deletions and
handles cleanup of both the provider-side mailbox and local mail app account.

Signed-off-by: Misha M.-Kupriyanov <kupriyanov@strato.de>
…ration

- Create MailboxAdminService for API integration
- Create MailboxAdministration main component with list view
- Create MailboxListItem for individual mailbox rows with delete action
- Create MailboxDeletionModal for delete confirmation
- Implement loading, error, and empty states
- Add user avatar and details display

Signed-off-by: Misha M.-Kupriyanov <kupriyanov@strato.de>
Signed-off-by: Tatjana Kaschperko Lindt <kaschperko-lindt@strato.de>
… section

- Create ProviderAccountOverviewSettings with its own navigation entry
- Create MailProviderAccountsSection for custom admin section
- Move MailboxAdministration component to new settings page
- Remove MailboxAdministration from general AdminSettings
- Add webpack entry for provider-account-overview
- Add comprehensive unit tests for new settings classes

This ensures email provider account management has its own dedicated
navigation entry instead of being embedded in the Groupware section.

Signed-off-by: Misha M.-Kupriyanov <kupriyanov@strato.de>
Co-authored-by: bromiesTM <78687674+bromiesTM@users.noreply.github.com>
Co-authored-by: Tatjana Kaschperko Lindt <kaschperko-lindt@strato.de>
Signed-off-by: Misha M.-Kupriyanov <kupriyanov@strato.de>
Signed-off-by: Kai Henseler <kai.henseler@strato.de>
Signed-off-by: Kai Henseler <kai.henseler@strato.de>
@printminion-co printminion-co changed the title Mailbox Overview Mailbox management dev branch Feb 20, 2026
…ut consistency

npm run stylelint:fix

Signed-off-by: Misha M.-Kupriyanov <kupriyanov@strato.de>
…erServiceException

Updated error handling in ExternalAccountsController to check for method existence before accessing additional data from ProviderServiceException. This enhances robustness and prevents potential runtime errors.

Signed-off-by: Misha M.-Kupriyanov <kupriyanov@strato.de>
…andling

Refactor the ExternalAccountsController to introduce a cleanRequestParams method
for removing framework-specific keys from request parameters. This improves code
readability and maintainability by centralizing the parameter cleaning logic.

Signed-off-by: Misha M.-Kupriyanov <kupriyanov@strato.de>
…validation responses

Refactor the error handling in ExternalAccountsController to utilize a new method for creating validation error responses. This improves code readability and maintains consistency in response formatting across different validation scenarios.

Signed-off-by: Misha M.-Kupriyanov <kupriyanov@strato.de>
…r admin

This commit introduces an endpoint to update mailbox details, allowing changes to the localpart and display name. It includes validation for input data and ensures that the new email address is not already in use by another user. The update functionality is integrated into the existing admin interface, enhancing the mailbox management capabilities.

Signed-off-by: Misha M.-Kupriyanov <kupriyanov@strato.de>
…ively in conflict resolution

Replace strict === comparison with strcasecmp() in IonosAccountConflictResolver
so that foo@bar.lol and FOO@BAR.LOL resolve to the same account, consistent
with all other email comparisons in the codebase.

Add a unit test covering the case where the IONOS API returns an email in
different casing than the requested address.

Signed-off-by: Misha M.-Kupriyanov <kupriyanov@strato.de>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants