IDocumentStore => IZeroStore
This commit is contained in:
@@ -8,6 +8,7 @@ using System.Linq;
|
||||
using System.Security.Claims;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
using zero.Core.Database;
|
||||
using zero.Core.Entities;
|
||||
|
||||
namespace zero.Core.Identity
|
||||
@@ -15,14 +16,14 @@ namespace zero.Core.Identity
|
||||
public class RavenRoleStore<TRole> : IRoleStore<TRole>, IRoleClaimStore<TRole>
|
||||
where TRole : class, IIdentityUserRole
|
||||
{
|
||||
protected IDocumentStore Raven { get; private set; }
|
||||
protected IZeroStore Store { get; private set; }
|
||||
|
||||
protected IdentityErrorDescriber ErrorDescriber { get; private set; }
|
||||
|
||||
|
||||
public RavenRoleStore(IDocumentStore raven, IdentityErrorDescriber describer = null)
|
||||
public RavenRoleStore(IZeroStore store, IdentityErrorDescriber describer = null)
|
||||
{
|
||||
Raven = raven;
|
||||
Store = store;
|
||||
ErrorDescriber = describer ?? new IdentityErrorDescriber();
|
||||
}
|
||||
|
||||
@@ -50,7 +51,7 @@ namespace zero.Core.Identity
|
||||
Description = $"The affected role is is not part of this role store and can't be created."
|
||||
});
|
||||
}
|
||||
using (IAsyncDocumentSession session = Raven.OpenAsyncSession())
|
||||
using (IAsyncDocumentSession session = Store.OpenAsyncSession())
|
||||
{
|
||||
await session.StoreAsync(role);
|
||||
await session.SaveChangesAsync(cancellationToken);
|
||||
@@ -72,7 +73,7 @@ namespace zero.Core.Identity
|
||||
}
|
||||
try
|
||||
{
|
||||
using IAsyncDocumentSession session = Raven.OpenAsyncSession();
|
||||
using IAsyncDocumentSession session = Store.OpenAsyncSession();
|
||||
await session.StoreAsync(role, cancellationToken);
|
||||
await session.SaveChangesAsync(cancellationToken);
|
||||
}
|
||||
@@ -97,7 +98,7 @@ namespace zero.Core.Identity
|
||||
}
|
||||
try
|
||||
{
|
||||
using IAsyncDocumentSession session = Raven.OpenAsyncSession();
|
||||
using IAsyncDocumentSession session = Store.OpenAsyncSession();
|
||||
session.Delete(role);
|
||||
await session.SaveChangesAsync(cancellationToken);
|
||||
}
|
||||
@@ -139,7 +140,7 @@ namespace zero.Core.Identity
|
||||
/// <inheritdoc/>
|
||||
public async Task<TRole> FindByIdAsync(string roleId, CancellationToken cancellationToken)
|
||||
{
|
||||
using IAsyncDocumentSession session = Raven.OpenAsyncSession();
|
||||
using IAsyncDocumentSession session = Store.OpenAsyncSession();
|
||||
return await ScopeQuery(session.Query<TRole>()).FirstOrDefaultAsync(x => x.Id == roleId, cancellationToken);
|
||||
}
|
||||
|
||||
@@ -147,7 +148,7 @@ namespace zero.Core.Identity
|
||||
/// <inheritdoc/>
|
||||
public async Task<TRole> FindByNameAsync(string normalizedRoleName, CancellationToken cancellationToken)
|
||||
{
|
||||
using IAsyncDocumentSession session = Raven.OpenAsyncSession();
|
||||
using IAsyncDocumentSession session = Store.OpenAsyncSession();
|
||||
return await ScopeQuery(session.Query<TRole>()).FirstOrDefaultAsync(x => x.Name == normalizedRoleName, cancellationToken);
|
||||
}
|
||||
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
using Raven.Client.Documents;
|
||||
using Raven.Client.Documents.Linq;
|
||||
using System;
|
||||
using zero.Core.Database;
|
||||
using zero.Core.Entities;
|
||||
using zero.Core.Extensions;
|
||||
|
||||
@@ -12,7 +13,7 @@ namespace zero.Core.Identity
|
||||
{
|
||||
protected IZeroContext Context { get; private set; }
|
||||
|
||||
public RavenScopedRoleStore(IDocumentStore raven, IZeroContext context, IdentityErrorDescriber describer = null) : base(raven, describer)
|
||||
public RavenScopedRoleStore(IZeroStore store, IZeroContext context, IdentityErrorDescriber describer = null) : base(store, describer)
|
||||
{
|
||||
Context = context;
|
||||
}
|
||||
@@ -31,7 +32,7 @@ namespace zero.Core.Identity
|
||||
{
|
||||
protected IZeroContext Context { get; private set; }
|
||||
|
||||
public RavenScopedUserStore(IDocumentStore raven, IZeroContext context) : base(raven)
|
||||
public RavenScopedUserStore(IZeroStore store, IZeroContext context) : base(store)
|
||||
{
|
||||
Context = context;
|
||||
}
|
||||
@@ -54,7 +55,7 @@ namespace zero.Core.Identity
|
||||
{
|
||||
protected IZeroContext Context { get; private set; }
|
||||
|
||||
public RavenScopedUserStore(IDocumentStore raven, IZeroContext context) : base(raven)
|
||||
public RavenScopedUserStore(IZeroStore store, IZeroContext context) : base(store)
|
||||
{
|
||||
Context = context;
|
||||
}
|
||||
|
||||
@@ -8,6 +8,7 @@ using System.Linq;
|
||||
using System.Security.Claims;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
using zero.Core.Database;
|
||||
using zero.Core.Entities;
|
||||
using zero.Core.Extensions;
|
||||
|
||||
@@ -23,11 +24,11 @@ namespace zero.Core.Identity
|
||||
IProtectedUserStore<TUser>
|
||||
where TUser : class, IIdentityUser
|
||||
{
|
||||
protected IDocumentStore Raven { get; private set; }
|
||||
protected IZeroStore Store { get; private set; }
|
||||
|
||||
public RavenUserStore(IDocumentStore raven)
|
||||
public RavenUserStore(IZeroStore store)
|
||||
{
|
||||
Raven = raven;
|
||||
Store = store;
|
||||
}
|
||||
|
||||
|
||||
@@ -61,10 +62,10 @@ namespace zero.Core.Identity
|
||||
});
|
||||
}
|
||||
|
||||
using IAsyncDocumentSession session = Raven.OpenAsyncSession();
|
||||
using IAsyncDocumentSession session = Store.OpenAsyncSession();
|
||||
|
||||
// try to reserve the key for the new user
|
||||
if (!await Raven.ReserveAsync(GetReservationKey(user), user.Id))
|
||||
if (!await Store.RavenStore.ReserveAsync(GetReservationKey(user), user.Id))
|
||||
{
|
||||
return IdentityResult.Failed(new IdentityError
|
||||
{
|
||||
@@ -86,7 +87,7 @@ namespace zero.Core.Identity
|
||||
{
|
||||
// The compare/exchange email reservation is cluster-wide, outside of the session scope.
|
||||
// We need to manually roll it back.
|
||||
await Raven.RemoveReservationAsync(GetReservationKey(user));
|
||||
await Store.RavenStore.RemoveReservationAsync(GetReservationKey(user));
|
||||
throw;
|
||||
}
|
||||
|
||||
@@ -107,11 +108,11 @@ namespace zero.Core.Identity
|
||||
}
|
||||
|
||||
// Remove the cluster-wide compare/exchange key.
|
||||
await Raven.RemoveReservationAsync(GetReservationKey(user));
|
||||
await Store.RavenStore.RemoveReservationAsync(GetReservationKey(user));
|
||||
|
||||
// Delete the user and save it. We must save it because deleting is a cluster-wide operation.
|
||||
// Only if the deletion succeeds will we remove the cluster-wide compare/exchange key.
|
||||
using IAsyncDocumentSession session = Raven.OpenAsyncSession();
|
||||
using IAsyncDocumentSession session = Store.OpenAsyncSession();
|
||||
|
||||
TUser source = await session.LoadAsync<TUser>(user.Id, cancellationToken);
|
||||
|
||||
@@ -134,7 +135,7 @@ namespace zero.Core.Identity
|
||||
});
|
||||
}
|
||||
|
||||
using (IAsyncDocumentSession session = Raven.OpenAsyncSession())
|
||||
using (IAsyncDocumentSession session = Store.OpenAsyncSession())
|
||||
{
|
||||
TUser source = await session.LoadAsync<TUser>(user.Id, cancellationToken);
|
||||
|
||||
@@ -150,7 +151,7 @@ namespace zero.Core.Identity
|
||||
if (source.Email != user.Email)
|
||||
{
|
||||
// try to reserve the key for the new user
|
||||
if (!await Raven.ReserveAsync(GetReservationKey(user), user.Id))
|
||||
if (!await Store.RavenStore.ReserveAsync(GetReservationKey(user), user.Id))
|
||||
{
|
||||
return IdentityResult.Failed(new IdentityError
|
||||
{
|
||||
@@ -160,11 +161,11 @@ namespace zero.Core.Identity
|
||||
}
|
||||
|
||||
// Remove the cluster-wide compare/exchange key.
|
||||
await Raven.RemoveReservationAsync(GetReservationKey(source));
|
||||
await Store.RavenStore.RemoveReservationAsync(GetReservationKey(source));
|
||||
}
|
||||
}
|
||||
|
||||
using (IAsyncDocumentSession session = Raven.OpenAsyncSession())
|
||||
using (IAsyncDocumentSession session = Store.OpenAsyncSession())
|
||||
{
|
||||
await session.StoreAsync(user, cancellationToken);
|
||||
await session.SaveChangesAsync(cancellationToken);
|
||||
@@ -177,7 +178,7 @@ namespace zero.Core.Identity
|
||||
/// <inheritdoc />
|
||||
public async Task<TUser> FindByIdAsync(string userId, CancellationToken cancellationToken)
|
||||
{
|
||||
using IAsyncDocumentSession session = Raven.OpenAsyncSession();
|
||||
using IAsyncDocumentSession session = Store.OpenAsyncSession();
|
||||
return await ScopeQuery(session.Query<TUser>()).FirstOrDefaultAsync(x => x.Id == userId, cancellationToken);
|
||||
}
|
||||
|
||||
@@ -185,7 +186,7 @@ namespace zero.Core.Identity
|
||||
/// <inheritdoc />
|
||||
public async Task<TUser> FindByNameAsync(string normalizedUserName, CancellationToken cancellationToken)
|
||||
{
|
||||
using IAsyncDocumentSession session = Raven.OpenAsyncSession();
|
||||
using IAsyncDocumentSession session = Store.OpenAsyncSession();
|
||||
return await ScopeQuery(session.Query<TUser>()).FirstOrDefaultAsync(x => x.Username == normalizedUserName, cancellationToken);
|
||||
}
|
||||
|
||||
@@ -253,7 +254,7 @@ namespace zero.Core.Identity
|
||||
/// <inheritdoc />
|
||||
public async Task<TUser> FindByEmailAsync(string normalizedEmail, CancellationToken cancellationToken)
|
||||
{
|
||||
using IAsyncDocumentSession session = Raven.OpenAsyncSession();
|
||||
using IAsyncDocumentSession session = Store.OpenAsyncSession();
|
||||
return await ScopeQuery(session.Query<TUser>()).FirstOrDefaultAsync(x => x.Email == normalizedEmail, cancellationToken);
|
||||
}
|
||||
|
||||
@@ -384,7 +385,7 @@ namespace zero.Core.Identity
|
||||
return;
|
||||
}
|
||||
|
||||
using IAsyncDocumentSession session = Raven.OpenAsyncSession();
|
||||
using IAsyncDocumentSession session = Store.OpenAsyncSession();
|
||||
|
||||
user.Claims.AddRange(claims.Select(claim => new UserClaim(claim)));
|
||||
await session.StoreAsync(user, cancellationToken);
|
||||
@@ -402,7 +403,7 @@ namespace zero.Core.Identity
|
||||
/// <inheritdoc />
|
||||
public async Task<IList<TUser>> GetUsersForClaimAsync(Claim claim, CancellationToken cancellationToken)
|
||||
{
|
||||
using IAsyncDocumentSession session = Raven.OpenAsyncSession();
|
||||
using IAsyncDocumentSession session = Store.OpenAsyncSession();
|
||||
UserClaim userClaim = new UserClaim(claim);
|
||||
return await ScopeQuery(session.Query<TUser>()).Where(x => x.Claims.Any(c => c.Type == userClaim.Type && c.Value == userClaim.Value)).ToListAsync();
|
||||
}
|
||||
@@ -417,7 +418,7 @@ namespace zero.Core.Identity
|
||||
return;
|
||||
}
|
||||
|
||||
using IAsyncDocumentSession session = Raven.OpenAsyncSession();
|
||||
using IAsyncDocumentSession session = Store.OpenAsyncSession();
|
||||
|
||||
IEnumerable<UserClaim> userClaims = claims.Select(c => new UserClaim(c)).ToList();
|
||||
|
||||
@@ -438,7 +439,7 @@ namespace zero.Core.Identity
|
||||
return;
|
||||
}
|
||||
|
||||
using IAsyncDocumentSession session = Raven.OpenAsyncSession();
|
||||
using IAsyncDocumentSession session = Store.OpenAsyncSession();
|
||||
|
||||
UserClaim userClaim = new UserClaim(claim);
|
||||
UserClaim newUserClaim = new UserClaim(newClaim);
|
||||
|
||||
@@ -7,6 +7,7 @@ using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
using zero.Core.Database;
|
||||
|
||||
namespace zero.Core.Identity
|
||||
{
|
||||
@@ -18,7 +19,7 @@ namespace zero.Core.Identity
|
||||
where TUser : class, IIdentityUserWithRoles
|
||||
where TRole : class, IIdentityUserRole
|
||||
{
|
||||
public RavenUserStore(IDocumentStore raven) : base(raven) { }
|
||||
public RavenUserStore(IZeroStore store) : base(store) { }
|
||||
|
||||
|
||||
/// <inheritdoc />
|
||||
@@ -39,7 +40,7 @@ namespace zero.Core.Identity
|
||||
/// <inheritdoc />
|
||||
public async Task<IList<TUser>> GetUsersInRoleAsync(string roleName, CancellationToken cancellationToken)
|
||||
{
|
||||
using IAsyncDocumentSession session = Raven.OpenAsyncSession();
|
||||
using IAsyncDocumentSession session = Store.OpenAsyncSession();
|
||||
return await ScopeQuery(session.Query<TUser>()).Where(x => roleName.In(x.RoleIds)).ToListAsync(); // TODO scope
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user