mirror of
https://github.com/bitwarden/server.git
synced 2025-05-20 19:14:32 -05:00
Removed caching
This commit is contained in:
parent
4a8162d09a
commit
f456a4fca8
@ -18,10 +18,7 @@ using Bit.Core.Repositories;
|
|||||||
using Bit.Core.Services;
|
using Bit.Core.Services;
|
||||||
using Repos = Bit.Core.Repositories.SqlServer;
|
using Repos = Bit.Core.Repositories.SqlServer;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
using StackExchange.Redis.Extensions.Core;
|
|
||||||
using StackExchange.Redis.Extensions.Newtonsoft;
|
|
||||||
using Loggr.Extensions.Logging;
|
using Loggr.Extensions.Logging;
|
||||||
using Newtonsoft.Json;
|
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using Microsoft.AspNetCore.Mvc.Formatters;
|
using Microsoft.AspNetCore.Mvc.Formatters;
|
||||||
using Microsoft.Net.Http.Headers;
|
using Microsoft.Net.Http.Headers;
|
||||||
@ -62,16 +59,6 @@ namespace Bit.Api
|
|||||||
ConfigurationBinder.Bind(Configuration.GetSection("GlobalSettings"), globalSettings);
|
ConfigurationBinder.Bind(Configuration.GetSection("GlobalSettings"), globalSettings);
|
||||||
services.AddSingleton(s => globalSettings);
|
services.AddSingleton(s => globalSettings);
|
||||||
|
|
||||||
// Caching
|
|
||||||
ISerializer serializer = new NewtonsoftSerializer(new JsonSerializerSettings
|
|
||||||
{
|
|
||||||
NullValueHandling = NullValueHandling.Ignore
|
|
||||||
});
|
|
||||||
services.AddSingleton(s => serializer);
|
|
||||||
ICacheClient cacheClient = new StackExchangeRedisCacheClient(serializer,
|
|
||||||
globalSettings.Cache.ConnectionString, globalSettings.Cache.Database);
|
|
||||||
services.AddSingleton(s => cacheClient);
|
|
||||||
|
|
||||||
// Repositories
|
// Repositories
|
||||||
services.AddSingleton<IUserRepository, Repos.UserRepository>();
|
services.AddSingleton<IUserRepository, Repos.UserRepository>();
|
||||||
services.AddSingleton<ICipherRepository, Repos.CipherRepository>();
|
services.AddSingleton<ICipherRepository, Repos.CipherRepository>();
|
||||||
|
@ -14,10 +14,6 @@
|
|||||||
"logKey": "SECRET",
|
"logKey": "SECRET",
|
||||||
"apiKey": "SECRET"
|
"apiKey": "SECRET"
|
||||||
},
|
},
|
||||||
"cache": {
|
|
||||||
"connectionString": "SECRET.COM:6380,password=SECRET,ssl=True,abortConnect=False",
|
|
||||||
"database": 0
|
|
||||||
},
|
|
||||||
"push": {
|
"push": {
|
||||||
"apnsCertificateThumbprint": "SECRET",
|
"apnsCertificateThumbprint": "SECRET",
|
||||||
"apnsCertificatePassword": "SECRET",
|
"apnsCertificatePassword": "SECRET",
|
||||||
|
@ -1,7 +0,0 @@
|
|||||||
namespace Bit.Core
|
|
||||||
{
|
|
||||||
public static class Constants
|
|
||||||
{
|
|
||||||
public const string UserIdCacheKey = "User:Id_{0}";
|
|
||||||
}
|
|
||||||
}
|
|
@ -7,23 +7,18 @@ using DataTableProxy;
|
|||||||
using Bit.Core.Domains;
|
using Bit.Core.Domains;
|
||||||
using System.Data;
|
using System.Data;
|
||||||
using Dapper;
|
using Dapper;
|
||||||
using StackExchange.Redis.Extensions.Core;
|
|
||||||
|
|
||||||
namespace Bit.Core.Repositories.SqlServer
|
namespace Bit.Core.Repositories.SqlServer
|
||||||
{
|
{
|
||||||
public class CipherRepository : Repository<Cipher, Guid>, ICipherRepository
|
public class CipherRepository : Repository<Cipher, Guid>, ICipherRepository
|
||||||
{
|
{
|
||||||
private readonly ICacheClient _cacheClient;
|
public CipherRepository(GlobalSettings globalSettings)
|
||||||
|
: this(globalSettings.SqlServer.ConnectionString)
|
||||||
public CipherRepository(GlobalSettings globalSettings, ICacheClient cacheClient)
|
|
||||||
: this(globalSettings.SqlServer.ConnectionString, cacheClient)
|
|
||||||
{ }
|
{ }
|
||||||
|
|
||||||
public CipherRepository(string connectionString, ICacheClient cacheClient)
|
public CipherRepository(string connectionString)
|
||||||
: base(connectionString)
|
: base(connectionString)
|
||||||
{
|
{ }
|
||||||
_cacheClient = cacheClient;
|
|
||||||
}
|
|
||||||
|
|
||||||
public async Task<Cipher> GetByIdAsync(Guid id, Guid userId)
|
public async Task<Cipher> GetByIdAsync(Guid id, Guid userId)
|
||||||
{
|
{
|
||||||
@ -87,11 +82,11 @@ namespace Bit.Core.Repositories.SqlServer
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public async Task UpdateUserEmailPasswordAndCiphersAsync(User user, IEnumerable<Cipher> ciphers)
|
public Task UpdateUserEmailPasswordAndCiphersAsync(User user, IEnumerable<Cipher> ciphers)
|
||||||
{
|
{
|
||||||
if(ciphers.Count() == 0)
|
if(ciphers.Count() == 0)
|
||||||
{
|
{
|
||||||
return;
|
return Task.FromResult(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
using(var connection = new SqlConnection(ConnectionString))
|
using(var connection = new SqlConnection(ConnectionString))
|
||||||
@ -176,8 +171,7 @@ namespace Bit.Core.Repositories.SqlServer
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Cleanup user cache
|
return Task.FromResult(0);
|
||||||
await _cacheClient.RemoveAllAsync(new string[] { string.Format(Constants.UserIdCacheKey, user.Id) });
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public Task CreateAsync(IEnumerable<Cipher> ciphers)
|
public Task CreateAsync(IEnumerable<Cipher> ciphers)
|
||||||
|
@ -5,37 +5,22 @@ using System.Linq;
|
|||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
using Bit.Core.Domains;
|
using Bit.Core.Domains;
|
||||||
using Dapper;
|
using Dapper;
|
||||||
using StackExchange.Redis.Extensions.Core;
|
|
||||||
|
|
||||||
namespace Bit.Core.Repositories.SqlServer
|
namespace Bit.Core.Repositories.SqlServer
|
||||||
{
|
{
|
||||||
public class UserRepository : Repository<User, Guid>, IUserRepository
|
public class UserRepository : Repository<User, Guid>, IUserRepository
|
||||||
{
|
{
|
||||||
private readonly ICacheClient _cacheClient;
|
public UserRepository(GlobalSettings globalSettings)
|
||||||
|
: this(globalSettings.SqlServer.ConnectionString)
|
||||||
public UserRepository(GlobalSettings globalSettings, ICacheClient cacheClient)
|
|
||||||
: this(globalSettings.SqlServer.ConnectionString, cacheClient)
|
|
||||||
{ }
|
{ }
|
||||||
|
|
||||||
public UserRepository(string connectionString, ICacheClient cacheClient)
|
public UserRepository(string connectionString)
|
||||||
: base(connectionString)
|
: base(connectionString)
|
||||||
{
|
{ }
|
||||||
_cacheClient = cacheClient;
|
|
||||||
}
|
|
||||||
|
|
||||||
public override async Task<User> GetByIdAsync(Guid id)
|
public override async Task<User> GetByIdAsync(Guid id)
|
||||||
{
|
{
|
||||||
var cacheKey = string.Format(Constants.UserIdCacheKey, id);
|
return await base.GetByIdAsync(id);
|
||||||
|
|
||||||
var user = await _cacheClient.GetAsync<User>(cacheKey);
|
|
||||||
if(user != null)
|
|
||||||
{
|
|
||||||
return user;
|
|
||||||
}
|
|
||||||
|
|
||||||
user = await base.GetByIdAsync(id);
|
|
||||||
await _cacheClient.AddAsync(cacheKey, user);
|
|
||||||
return user;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public async Task<User> GetByEmailAsync(string email)
|
public async Task<User> GetByEmailAsync(string email)
|
||||||
@ -54,18 +39,11 @@ namespace Bit.Core.Repositories.SqlServer
|
|||||||
public override async Task ReplaceAsync(User user)
|
public override async Task ReplaceAsync(User user)
|
||||||
{
|
{
|
||||||
await base.ReplaceAsync(user);
|
await base.ReplaceAsync(user);
|
||||||
await PurgeCacheAsync(user);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public override async Task DeleteAsync(User user)
|
public override async Task DeleteAsync(User user)
|
||||||
{
|
{
|
||||||
await base.DeleteAsync(user);
|
await base.DeleteAsync(user);
|
||||||
await PurgeCacheAsync(user);
|
|
||||||
}
|
|
||||||
|
|
||||||
private async Task PurgeCacheAsync(User user)
|
|
||||||
{
|
|
||||||
await _cacheClient.RemoveAllAsync(new string[] { string.Format(Constants.UserIdCacheKey, user.Id) });
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -12,7 +12,6 @@
|
|||||||
"DataTableProxy": "1.2.0",
|
"DataTableProxy": "1.2.0",
|
||||||
"Sendgrid": "6.3.4",
|
"Sendgrid": "6.3.4",
|
||||||
"StackExchange.Redis": "1.0.488",
|
"StackExchange.Redis": "1.0.488",
|
||||||
"StackExchange.Redis.Extensions.Newtonsoft": "1.3.5",
|
|
||||||
"PushSharp": "4.0.10"
|
"PushSharp": "4.0.10"
|
||||||
},
|
},
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user