Browse Source
* ServerProtectedData for user entity * remove using statements * formatting * use data protection libs * no async * add data protection to ef user repo * switch to `SetApplicationName` per ASPNET docs * null checks * cleanup * value converter for EF * new line at eof * fix using * remove folder ref * restore ctor * fix lint * use global constant * UseApplicationServiceProvider for integration tests * implement constant for DatabaseFieldProtectedPrefix * Fix EF IntegrationTest * restore original values after protect and save * lint fixes * Use Constants Co-authored-by: Justin Baur <19896123+justindbaur@users.noreply.github.com>pull/2579/head
8 changed files with 199 additions and 14 deletions
@ -0,0 +1,33 @@ |
|||||||
|
using Bit.Core; |
||||||
|
using Microsoft.AspNetCore.DataProtection; |
||||||
|
using Microsoft.EntityFrameworkCore.Storage.ValueConversion; |
||||||
|
|
||||||
|
namespace Bit.Infrastructure.EntityFramework.Converters; |
||||||
|
public class DataProtectionConverter : ValueConverter<string, string> |
||||||
|
{ |
||||||
|
public DataProtectionConverter(IDataProtector dataProtector) : |
||||||
|
base(s => Protect(dataProtector, s), s => Unprotect(dataProtector, s)) |
||||||
|
{ } |
||||||
|
|
||||||
|
private static string Protect(IDataProtector dataProtector, string value) |
||||||
|
{ |
||||||
|
if (value?.StartsWith(Constants.DatabaseFieldProtectedPrefix) ?? true) |
||||||
|
{ |
||||||
|
return value; |
||||||
|
} |
||||||
|
|
||||||
|
return string.Concat( |
||||||
|
Constants.DatabaseFieldProtectedPrefix, dataProtector.Protect(value)); |
||||||
|
} |
||||||
|
|
||||||
|
private static string Unprotect(IDataProtector dataProtector, string value) |
||||||
|
{ |
||||||
|
if (!value?.StartsWith(Constants.DatabaseFieldProtectedPrefix) ?? true) |
||||||
|
{ |
||||||
|
return value; |
||||||
|
} |
||||||
|
|
||||||
|
return dataProtector.Unprotect( |
||||||
|
value.Substring(Constants.DatabaseFieldProtectedPrefix.Length)); |
||||||
|
} |
||||||
|
} |
||||||
Loading…
Reference in new issue