mirror of
https://github.com/bitwarden/server.git
synced 2025-07-09 20:03:47 -05:00
[SM-485] Add access policy on project creation (#2678)
* Add bootstrap access policy on create * Update project integration tests
This commit is contained in:
@ -1,4 +1,5 @@
|
||||
using Bit.Core.SecretsManager.Commands.Projects.Interfaces;
|
||||
using Bit.Core.Repositories;
|
||||
using Bit.Core.SecretsManager.Commands.Projects.Interfaces;
|
||||
using Bit.Core.SecretsManager.Entities;
|
||||
using Bit.Core.SecretsManager.Repositories;
|
||||
|
||||
@ -6,15 +7,35 @@ namespace Bit.Commercial.Core.SecretsManager.Commands.Projects;
|
||||
|
||||
public class CreateProjectCommand : ICreateProjectCommand
|
||||
{
|
||||
private readonly IAccessPolicyRepository _accessPolicyRepository;
|
||||
private readonly IOrganizationUserRepository _organizationUserRepository;
|
||||
private readonly IProjectRepository _projectRepository;
|
||||
|
||||
public CreateProjectCommand(IProjectRepository projectRepository)
|
||||
public CreateProjectCommand(
|
||||
IAccessPolicyRepository accessPolicyRepository,
|
||||
IOrganizationUserRepository organizationUserRepository,
|
||||
IProjectRepository projectRepository
|
||||
)
|
||||
{
|
||||
_accessPolicyRepository = accessPolicyRepository;
|
||||
_organizationUserRepository = organizationUserRepository;
|
||||
_projectRepository = projectRepository;
|
||||
}
|
||||
|
||||
public async Task<Project> CreateAsync(Project project)
|
||||
public async Task<Project> CreateAsync(Project project, Guid userId)
|
||||
{
|
||||
return await _projectRepository.CreateAsync(project);
|
||||
var createdProject = await _projectRepository.CreateAsync(project);
|
||||
|
||||
var orgUser = await _organizationUserRepository.GetByOrganizationAsync(createdProject.OrganizationId,
|
||||
userId);
|
||||
var accessPolicy = new UserProjectAccessPolicy()
|
||||
{
|
||||
OrganizationUserId = orgUser.Id,
|
||||
GrantedProjectId = createdProject.Id,
|
||||
Read = true,
|
||||
Write = true,
|
||||
};
|
||||
await _accessPolicyRepository.CreateManyAsync(new List<BaseAccessPolicy> { accessPolicy });
|
||||
return createdProject;
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user