mirror of
https://github.com/bitwarden/server.git
synced 2025-07-14 06:07:36 -05:00
[AC-1200] Admin Console code ownership - move OrganizationFeatures (#3369)
This commit is contained in:
@ -0,0 +1,32 @@
|
||||
using Bit.Core.AdminConsole.OrganizationFeatures.OrganizationApiKeys.Interfaces;
|
||||
using Bit.Core.Entities;
|
||||
using Bit.Core.Enums;
|
||||
using Bit.Core.Repositories;
|
||||
using Bit.Core.Utilities;
|
||||
|
||||
namespace Bit.Core.AdminConsole.OrganizationFeatures.OrganizationApiKeys;
|
||||
|
||||
public class CreateOrganizationApiKeyCommand : ICreateOrganizationApiKeyCommand
|
||||
{
|
||||
private readonly IOrganizationApiKeyRepository _organizationApiKeyRepository;
|
||||
|
||||
public CreateOrganizationApiKeyCommand(IOrganizationApiKeyRepository organizationApiKeyRepository)
|
||||
{
|
||||
_organizationApiKeyRepository = organizationApiKeyRepository;
|
||||
}
|
||||
|
||||
public async Task<OrganizationApiKey> CreateAsync(Guid organizationId,
|
||||
OrganizationApiKeyType organizationApiKeyType)
|
||||
{
|
||||
var apiKey = new OrganizationApiKey
|
||||
{
|
||||
OrganizationId = organizationId,
|
||||
Type = organizationApiKeyType,
|
||||
ApiKey = CoreHelpers.SecureRandomString(30),
|
||||
RevisionDate = DateTime.UtcNow,
|
||||
};
|
||||
|
||||
await _organizationApiKeyRepository.CreateAsync(apiKey);
|
||||
return apiKey;
|
||||
}
|
||||
}
|
@ -0,0 +1,30 @@
|
||||
using Bit.Core.AdminConsole.OrganizationFeatures.OrganizationApiKeys.Interfaces;
|
||||
using Bit.Core.Entities;
|
||||
using Bit.Core.Enums;
|
||||
using Bit.Core.Repositories;
|
||||
|
||||
namespace Bit.Core.AdminConsole.OrganizationFeatures.OrganizationApiKeys;
|
||||
|
||||
public class GetOrganizationApiKeyQuery : IGetOrganizationApiKeyQuery
|
||||
{
|
||||
private readonly IOrganizationApiKeyRepository _organizationApiKeyRepository;
|
||||
|
||||
public GetOrganizationApiKeyQuery(IOrganizationApiKeyRepository organizationApiKeyRepository)
|
||||
{
|
||||
_organizationApiKeyRepository = organizationApiKeyRepository;
|
||||
}
|
||||
|
||||
public async Task<OrganizationApiKey> GetOrganizationApiKeyAsync(Guid organizationId, OrganizationApiKeyType organizationApiKeyType)
|
||||
{
|
||||
if (!Enum.IsDefined(organizationApiKeyType))
|
||||
{
|
||||
throw new ArgumentOutOfRangeException(nameof(organizationApiKeyType), $"Invalid value for enum {nameof(OrganizationApiKeyType)}");
|
||||
}
|
||||
|
||||
var apiKeys = await _organizationApiKeyRepository
|
||||
.GetManyByOrganizationIdTypeAsync(organizationId, organizationApiKeyType);
|
||||
|
||||
// NOTE: Currently we only allow one type of api key per organization
|
||||
return apiKeys.SingleOrDefault();
|
||||
}
|
||||
}
|
@ -0,0 +1,9 @@
|
||||
using Bit.Core.Entities;
|
||||
using Bit.Core.Enums;
|
||||
|
||||
namespace Bit.Core.AdminConsole.OrganizationFeatures.OrganizationApiKeys.Interfaces;
|
||||
|
||||
public interface ICreateOrganizationApiKeyCommand
|
||||
{
|
||||
Task<OrganizationApiKey> CreateAsync(Guid organizationId, OrganizationApiKeyType organizationApiKeyType);
|
||||
}
|
@ -0,0 +1,9 @@
|
||||
using Bit.Core.Entities;
|
||||
using Bit.Core.Enums;
|
||||
|
||||
namespace Bit.Core.AdminConsole.OrganizationFeatures.OrganizationApiKeys.Interfaces;
|
||||
|
||||
public interface IGetOrganizationApiKeyQuery
|
||||
{
|
||||
Task<OrganizationApiKey> GetOrganizationApiKeyAsync(Guid organizationId, OrganizationApiKeyType organizationApiKeyType);
|
||||
}
|
@ -0,0 +1,8 @@
|
||||
using Bit.Core.Entities;
|
||||
|
||||
namespace Bit.Core.AdminConsole.OrganizationFeatures.OrganizationApiKeys.Interfaces;
|
||||
|
||||
public interface IRotateOrganizationApiKeyCommand
|
||||
{
|
||||
Task<OrganizationApiKey> RotateApiKeyAsync(OrganizationApiKey organizationApiKey);
|
||||
}
|
@ -0,0 +1,24 @@
|
||||
using Bit.Core.AdminConsole.OrganizationFeatures.OrganizationApiKeys.Interfaces;
|
||||
using Bit.Core.Entities;
|
||||
using Bit.Core.Repositories;
|
||||
using Bit.Core.Utilities;
|
||||
|
||||
namespace Bit.Core.AdminConsole.OrganizationFeatures.OrganizationApiKeys;
|
||||
|
||||
public class RotateOrganizationApiKeyCommand : IRotateOrganizationApiKeyCommand
|
||||
{
|
||||
private readonly IOrganizationApiKeyRepository _organizationApiKeyRepository;
|
||||
|
||||
public RotateOrganizationApiKeyCommand(IOrganizationApiKeyRepository organizationApiKeyRepository)
|
||||
{
|
||||
_organizationApiKeyRepository = organizationApiKeyRepository;
|
||||
}
|
||||
|
||||
public async Task<OrganizationApiKey> RotateApiKeyAsync(OrganizationApiKey organizationApiKey)
|
||||
{
|
||||
organizationApiKey.ApiKey = CoreHelpers.SecureRandomString(30);
|
||||
organizationApiKey.RevisionDate = DateTime.UtcNow;
|
||||
await _organizationApiKeyRepository.UpsertAsync(organizationApiKey);
|
||||
return organizationApiKey;
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user