mirror of
https://github.com/bitwarden/server.git
synced 2025-06-30 07:36:14 -05:00
SM-365: Add Export & Import Functionality for SM (#2591)
* SM-365: Add Export endpoint * SM-365: Add SM Import/Export support * SM-365: Fix DI and add temp NoAccessCheck * SM-365: Add access checks to import / export * SM-365: dotnet format * SM-365: Fix import bugs * SM-365: Fix import bug with EF & refactor based on PR comments * SM-365: Update access permissions in export * SM-365: Address PR comments * SM-365: Refactor for readability and PR comments
This commit is contained in:
@ -0,0 +1,7 @@
|
||||
namespace Bit.Core.SecretsManager.Commands.Porting.Interfaces;
|
||||
|
||||
public interface IImportCommand
|
||||
{
|
||||
Task ImportAsync(Guid organizationId, SMImport import);
|
||||
SMImport AssignNewIds(SMImport import);
|
||||
}
|
41
src/Core/SecretsManager/Commands/Porting/SMImport.cs
Normal file
41
src/Core/SecretsManager/Commands/Porting/SMImport.cs
Normal file
@ -0,0 +1,41 @@
|
||||
namespace Bit.Core.SecretsManager.Commands.Porting;
|
||||
|
||||
public class SMImport
|
||||
{
|
||||
public IEnumerable<InnerProject> Projects { get; set; }
|
||||
public IEnumerable<InnerSecret> Secrets { get; set; }
|
||||
|
||||
public class InnerProject
|
||||
{
|
||||
public InnerProject() { }
|
||||
|
||||
public InnerProject(Core.SecretsManager.Entities.Project project)
|
||||
{
|
||||
Id = project.Id;
|
||||
Name = project.Name;
|
||||
}
|
||||
|
||||
public Guid Id { get; set; }
|
||||
public string Name { get; set; }
|
||||
}
|
||||
|
||||
public class InnerSecret
|
||||
{
|
||||
public InnerSecret() { }
|
||||
|
||||
public InnerSecret(Core.SecretsManager.Entities.Secret secret)
|
||||
{
|
||||
Id = secret.Id;
|
||||
Key = secret.Key;
|
||||
Value = secret.Value;
|
||||
Note = secret.Note;
|
||||
ProjectIds = secret.Projects != null && secret.Projects.Any() ? secret.Projects.Select(p => p.Id) : null;
|
||||
}
|
||||
|
||||
public Guid Id { get; set; }
|
||||
public string Key { get; set; }
|
||||
public string Value { get; set; }
|
||||
public string Note { get; set; }
|
||||
public IEnumerable<Guid> ProjectIds { get; set; }
|
||||
}
|
||||
}
|
@ -11,6 +11,7 @@ public interface IProjectRepository
|
||||
Task<Project> CreateAsync(Project project);
|
||||
Task ReplaceAsync(Project project);
|
||||
Task DeleteManyByIdAsync(IEnumerable<Guid> ids);
|
||||
Task<IEnumerable<Project>> ImportAsync(IEnumerable<Project> projects);
|
||||
Task<bool> UserHasReadAccessToProject(Guid id, Guid userId);
|
||||
Task<bool> UserHasWriteAccessToProject(Guid id, Guid userId);
|
||||
}
|
||||
|
@ -11,4 +11,6 @@ public interface ISecretRepository
|
||||
Task<Secret> CreateAsync(Secret secret);
|
||||
Task<Secret> UpdateAsync(Secret secret);
|
||||
Task SoftDeleteManyByIdAsync(IEnumerable<Guid> ids);
|
||||
Task HardDeleteManyByIdAsync(IEnumerable<Guid> ids);
|
||||
Task<IEnumerable<Secret>> ImportAsync(IEnumerable<Secret> secrets);
|
||||
}
|
||||
|
Reference in New Issue
Block a user