1
0
mirror of https://github.com/bitwarden/server synced 2025-12-30 15:14:02 +00:00

[SM-574] Wire up read/write for secret list and secret response (#2767)

* Wire up read/write for secret list and secret response

* Fix trash

* Remove UserHasReadPermission

* Fix list by project

* Implement admin and service accounts for AccessToSecretAsync

* Resolve feedback

* Fix tests

* Rename function

* Change create to return true, true

* Remove duplicated access check
This commit is contained in:
Oscar Hinton
2023-03-30 16:51:46 +02:00
committed by GitHub
parent 60fcc79f97
commit 60bdf77e8b
9 changed files with 170 additions and 88 deletions

View File

@@ -7,7 +7,7 @@ public class SecretResponseModel : ResponseModel
{
private const string _objectName = "secret";
public SecretResponseModel(Secret secret) : base(_objectName)
public SecretResponseModel(Secret secret, bool read, bool write) : base(_objectName)
{
if (secret == null)
{
@@ -22,6 +22,9 @@ public class SecretResponseModel : ResponseModel
CreationDate = secret.CreationDate;
RevisionDate = secret.RevisionDate;
Projects = secret.Projects?.Select(p => new InnerProject(p));
Read = read;
Write = write;
}
public SecretResponseModel() : base(_objectName)
@@ -44,6 +47,10 @@ public class SecretResponseModel : ResponseModel
public IEnumerable<InnerProject> Projects { get; set; }
public bool Read { get; set; }
public bool Write { get; set; }
public class InnerProject
{
public InnerProject(Project project)

View File

@@ -1,5 +1,6 @@
using Bit.Core.Models.Api;
using Bit.Core.SecretsManager.Entities;
using Bit.Core.SecretsManager.Models.Data;
namespace Bit.Api.SecretsManager.Models.Response;
@@ -7,10 +8,10 @@ public class SecretWithProjectsListResponseModel : ResponseModel
{
private const string _objectName = "SecretsWithProjectsList";
public SecretWithProjectsListResponseModel(IEnumerable<Secret> secrets) : base(_objectName)
public SecretWithProjectsListResponseModel(IEnumerable<SecretPermissionDetails> secrets) : base(_objectName)
{
Secrets = secrets.Select(s => new InnerSecret(s));
Projects = secrets.SelectMany(s => s.Projects).DistinctBy(p => p.Id).Select(p => new InnerProject(p));
Projects = secrets.SelectMany(s => s.Secret.Projects).DistinctBy(p => p.Id).Select(p => new InnerProject(p));
}
public SecretWithProjectsListResponseModel() : base(_objectName)
@@ -38,14 +39,16 @@ public class SecretWithProjectsListResponseModel : ResponseModel
public class InnerSecret
{
public InnerSecret(Secret secret)
public InnerSecret(SecretPermissionDetails secret)
{
Id = secret.Id.ToString();
OrganizationId = secret.OrganizationId.ToString();
Key = secret.Key;
CreationDate = secret.CreationDate;
RevisionDate = secret.RevisionDate;
Projects = secret.Projects?.Select(p => new InnerProject(p));
Id = secret.Secret.Id.ToString();
OrganizationId = secret.Secret.OrganizationId.ToString();
Key = secret.Secret.Key;
CreationDate = secret.Secret.CreationDate;
RevisionDate = secret.Secret.RevisionDate;
Projects = secret.Secret.Projects?.Select(p => new InnerProject(p));
Read = secret.Read;
Write = secret.Write;
}
public InnerSecret()
@@ -63,6 +66,8 @@ public class SecretWithProjectsListResponseModel : ResponseModel
public DateTime RevisionDate { get; set; }
public IEnumerable<InnerProject> Projects { get; set; }
public bool Read { get; set; }
public bool Write { get; set; }
}
}