1
0
mirror of https://github.com/bitwarden/server synced 2025-12-29 06:33:43 +00:00

Move into and read ciphers from org subvaults

This commit is contained in:
Kyle Spearrin
2017-03-21 00:04:39 -04:00
parent 4779794599
commit ed8d5d69a4
22 changed files with 283 additions and 16 deletions

View File

@@ -8,6 +8,8 @@ using Bit.Core.Models.Table;
using System.Data;
using Dapper;
using Core.Models.Data;
using Bit.Core.Utilities;
using Newtonsoft.Json;
namespace Bit.Core.Repositories.SqlServer
{
@@ -120,6 +122,20 @@ namespace Bit.Core.Repositories.SqlServer
}
}
public async Task ReplaceAsync(Cipher obj, IEnumerable<Guid> subvaultIds)
{
var objWithSubvaults = JsonConvert.DeserializeObject<CipherWithSubvaults>(JsonConvert.SerializeObject(obj));
objWithSubvaults.SubvaultIds = subvaultIds.ToGuidIdArrayTVP();
using(var connection = new SqlConnection(ConnectionString))
{
var results = await connection.ExecuteAsync(
$"[{Schema}].[Cipher_UpdateWithSubvaults]",
objWithSubvaults,
commandType: CommandType.StoredProcedure);
}
}
public Task UpdateUserEmailPasswordAndCiphersAsync(User user, IEnumerable<Cipher> ciphers)
{
if(ciphers.Count() == 0)
@@ -252,5 +268,10 @@ namespace Bit.Core.Repositories.SqlServer
return Task.FromResult(0);
}
public class CipherWithSubvaults : Cipher
{
public DataTable SubvaultIds { get; set; }
}
}
}

View File

@@ -6,6 +6,8 @@ using System.Data;
using System.Data.SqlClient;
using Dapper;
using System.Linq;
using Bit.Core.Models.Data;
using Bit.Core.Utilities;
namespace Bit.Core.Repositories.SqlServer
{
@@ -31,5 +33,32 @@ namespace Bit.Core.Repositories.SqlServer
return results.ToList();
}
}
public async Task<ICollection<SubvaultUserDetails>> GetManyDetailsByUserIdAsync(Guid userId)
{
using(var connection = new SqlConnection(ConnectionString))
{
var results = await connection.QueryAsync<SubvaultUserDetails>(
$"[{Schema}].[SubvaultUserDetails_ReadByUserId]",
new { UserId = userId },
commandType: CommandType.StoredProcedure);
return results.ToList();
}
}
public async Task<ICollection<SubvaultUserPermissions>> GetPermissionsByUserIdAsync(Guid userId,
IEnumerable<Guid> subvaultIds, Guid organizationId)
{
using(var connection = new SqlConnection(ConnectionString))
{
var results = await connection.QueryAsync<SubvaultUserPermissions>(
$"[{Schema}].[SubvaultUser_ReadPermissionsBySubvaultUserId]",
new { UserId = userId, SubvaultIds = subvaultIds.ToGuidIdArrayTVP(), OrganizationId = organizationId },
commandType: CommandType.StoredProcedure);
return results.ToList();
}
}
}
}