mirror of
https://github.com/bitwarden/server
synced 2025-12-26 21:23:39 +00:00
[PM-12491] Create Organization disable command (#5348)
* Add command interface and implementation for disabling organizations * Register organization disable command for dependency injection * Add unit tests for OrganizationDisableCommand * Refactor subscription handlers to use IOrganizationDisableCommand for disabling organizations * Remove DisableAsync method from IOrganizationService and its implementation in OrganizationService * Remove IOrganizationService dependency from SubscriptionDeletedHandler * Remove commented TODO for sending email to owners in OrganizationDisableCommand
This commit is contained in:
@@ -0,0 +1,14 @@
|
||||
namespace Bit.Core.AdminConsole.OrganizationFeatures.Organizations.Interfaces;
|
||||
|
||||
/// <summary>
|
||||
/// Command interface for disabling organizations.
|
||||
/// </summary>
|
||||
public interface IOrganizationDisableCommand
|
||||
{
|
||||
/// <summary>
|
||||
/// Disables an organization with an optional expiration date.
|
||||
/// </summary>
|
||||
/// <param name="organizationId">The unique identifier of the organization to disable.</param>
|
||||
/// <param name="expirationDate">Optional date when the disable status should expire.</param>
|
||||
Task DisableAsync(Guid organizationId, DateTime? expirationDate);
|
||||
}
|
||||
@@ -0,0 +1,33 @@
|
||||
using Bit.Core.AdminConsole.OrganizationFeatures.Organizations.Interfaces;
|
||||
using Bit.Core.Repositories;
|
||||
using Bit.Core.Services;
|
||||
|
||||
namespace Bit.Core.AdminConsole.OrganizationFeatures.Organizations;
|
||||
|
||||
public class OrganizationDisableCommand : IOrganizationDisableCommand
|
||||
{
|
||||
private readonly IOrganizationRepository _organizationRepository;
|
||||
private readonly IApplicationCacheService _applicationCacheService;
|
||||
|
||||
public OrganizationDisableCommand(
|
||||
IOrganizationRepository organizationRepository,
|
||||
IApplicationCacheService applicationCacheService)
|
||||
{
|
||||
_organizationRepository = organizationRepository;
|
||||
_applicationCacheService = applicationCacheService;
|
||||
}
|
||||
|
||||
public async Task DisableAsync(Guid organizationId, DateTime? expirationDate)
|
||||
{
|
||||
var organization = await _organizationRepository.GetByIdAsync(organizationId);
|
||||
if (organization is { Enabled: true })
|
||||
{
|
||||
organization.Enabled = false;
|
||||
organization.ExpirationDate = expirationDate;
|
||||
organization.RevisionDate = DateTime.UtcNow;
|
||||
|
||||
await _organizationRepository.ReplaceAsync(organization);
|
||||
await _applicationCacheService.UpsertOrganizationAbilityAsync(organization);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user