Merge pull request #15 from InfinitTechnologies/master
Changed ID creation to use TransformTypeCollectionNameToDocumentIdPrefix for collection name.
This commit is contained in:
@@ -49,9 +49,10 @@ namespace Raven.Identity
|
|||||||
var vals = new[] { userId, loginProvider, name }
|
var vals = new[] { userId, loginProvider, name }
|
||||||
.Select(v => v ?? "[null]");
|
.Select(v => v ?? "[null]");
|
||||||
var collection = db.Conventions.GetCollectionName(typeof(IdentityUserAuthToken));
|
var collection = db.Conventions.GetCollectionName(typeof(IdentityUserAuthToken));
|
||||||
|
var prefix = db.Conventions.TransformTypeCollectionNameToDocumentIdPrefix(collection);
|
||||||
var separator = db.Conventions.IdentityPartsSeparator;
|
var separator = db.Conventions.IdentityPartsSeparator;
|
||||||
var valsHash = CalculateHash(string.Join("-", vals));
|
var valsHash = CalculateHash(string.Join("-", vals));
|
||||||
return collection + separator + valsHash.ToString();
|
return prefix + separator + valsHash.ToString();
|
||||||
}
|
}
|
||||||
|
|
||||||
private static int CalculateHash(string input)
|
private static int CalculateHash(string input)
|
||||||
|
|||||||
@@ -414,8 +414,9 @@ namespace Raven.Identity
|
|||||||
internal static string GetRavenIdFromRoleName(string role, IDocumentStore docStore)
|
internal static string GetRavenIdFromRoleName(string role, IDocumentStore docStore)
|
||||||
{
|
{
|
||||||
var roleCollection = docStore.Conventions.GetCollectionName(typeof(TRole));
|
var roleCollection = docStore.Conventions.GetCollectionName(typeof(TRole));
|
||||||
|
var prefix = docStore.Conventions.TransformTypeCollectionNameToDocumentIdPrefix(roleCollection);
|
||||||
var partSeparator = docStore.Conventions.IdentityPartsSeparator;
|
var partSeparator = docStore.Conventions.IdentityPartsSeparator;
|
||||||
return roleCollection + partSeparator + role;
|
return prefix + partSeparator + role;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -50,7 +50,7 @@ namespace Raven.Identity
|
|||||||
.AddDefaultTokenProviders();
|
.AddDefaultTokenProviders();
|
||||||
}
|
}
|
||||||
|
|
||||||
services.AddScoped<Microsoft.AspNetCore.Identity.IUserStore<TUser>, UserStore<TUser>>();
|
services.AddScoped<Microsoft.AspNetCore.Identity.IUserStore<TUser>, UserStore<TUser, TRole>>();
|
||||||
services.AddScoped<Microsoft.AspNetCore.Identity.IRoleStore<TRole>, RoleStore<TRole>>();
|
services.AddScoped<Microsoft.AspNetCore.Identity.IRoleStore<TRole>, RoleStore<TRole>>();
|
||||||
|
|
||||||
return identityBuilder;
|
return identityBuilder;
|
||||||
|
|||||||
@@ -16,7 +16,8 @@ namespace Raven.Identity
|
|||||||
/// UserStore for entities in a RavenDB database.
|
/// UserStore for entities in a RavenDB database.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <typeparam name="TUser"></typeparam>
|
/// <typeparam name="TUser"></typeparam>
|
||||||
public class UserStore<TUser> :
|
/// <typeparam name="TRole"></typeparam>
|
||||||
|
public class UserStore<TUser, TRole> :
|
||||||
IUserStore<TUser>,
|
IUserStore<TUser>,
|
||||||
IUserLoginStore<TUser>,
|
IUserLoginStore<TUser>,
|
||||||
IUserClaimStore<TUser>,
|
IUserClaimStore<TUser>,
|
||||||
@@ -32,6 +33,7 @@ namespace Raven.Identity
|
|||||||
IUserTwoFactorRecoveryCodeStore<TUser>,
|
IUserTwoFactorRecoveryCodeStore<TUser>,
|
||||||
IQueryableUserStore<TUser>
|
IQueryableUserStore<TUser>
|
||||||
where TUser : IdentityUser
|
where TUser : IdentityUser
|
||||||
|
where TRole : IdentityRole
|
||||||
{
|
{
|
||||||
private bool _disposed;
|
private bool _disposed;
|
||||||
private readonly Func<IAsyncDocumentSession> getSessionFunc;
|
private readonly Func<IAsyncDocumentSession> getSessionFunc;
|
||||||
@@ -129,8 +131,9 @@ namespace Raven.Identity
|
|||||||
{
|
{
|
||||||
var conventions = DbSession.Advanced.DocumentStore.Conventions;
|
var conventions = DbSession.Advanced.DocumentStore.Conventions;
|
||||||
var entityName = conventions.GetCollectionName(typeof(TUser));
|
var entityName = conventions.GetCollectionName(typeof(TUser));
|
||||||
|
var prefix = conventions.TransformTypeCollectionNameToDocumentIdPrefix(entityName);
|
||||||
var separator = conventions.IdentityPartsSeparator;
|
var separator = conventions.IdentityPartsSeparator;
|
||||||
var id = $"{entityName}{separator}{user.Email}";
|
var id = $"{prefix}{separator}{user.Email}";
|
||||||
user.Id = id;
|
user.Id = id;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -389,10 +392,11 @@ namespace Raven.Identity
|
|||||||
ThrowIfNullDisposedCancelled(user, cancellationToken);
|
ThrowIfNullDisposedCancelled(user, cancellationToken);
|
||||||
|
|
||||||
// See if we have an IdentityRole with that name.
|
// See if we have an IdentityRole with that name.
|
||||||
var identityUserPrefix = DbSession.Advanced.DocumentStore.Conventions.GetCollectionName(typeof(IdentityRole));
|
var identityUserCollection = DbSession.Advanced.DocumentStore.Conventions.GetCollectionName(typeof(TRole));
|
||||||
|
var prefix = DbSession.Advanced.DocumentStore.Conventions.TransformTypeCollectionNameToDocumentIdPrefix(identityUserCollection);
|
||||||
var identityPartSeperator = DbSession.Advanced.DocumentStore.Conventions.IdentityPartsSeparator;
|
var identityPartSeperator = DbSession.Advanced.DocumentStore.Conventions.IdentityPartsSeparator;
|
||||||
var roleNameLowered = roleName.ToLowerInvariant();
|
var roleNameLowered = roleName.ToLowerInvariant();
|
||||||
var roleId = identityUserPrefix + identityPartSeperator + roleNameLowered;
|
var roleId = prefix + identityPartSeperator + roleNameLowered;
|
||||||
var existingRoleOrNull = await this.DbSession.LoadAsync<IdentityRole>(roleId, cancellationToken);
|
var existingRoleOrNull = await this.DbSession.LoadAsync<IdentityRole>(roleId, cancellationToken);
|
||||||
if (existingRoleOrNull == null)
|
if (existingRoleOrNull == null)
|
||||||
{
|
{
|
||||||
@@ -421,7 +425,7 @@ namespace Raven.Identity
|
|||||||
|
|
||||||
user.GetRolesList().RemoveAll(r => string.Equals(r, roleName, StringComparison.InvariantCultureIgnoreCase));
|
user.GetRolesList().RemoveAll(r => string.Equals(r, roleName, StringComparison.InvariantCultureIgnoreCase));
|
||||||
|
|
||||||
var roleId = RoleStore<IdentityRole>.GetRavenIdFromRoleName(roleName, DbSession.Advanced.DocumentStore);
|
var roleId = RoleStore<TRole>.GetRavenIdFromRoleName(roleName, DbSession.Advanced.DocumentStore);
|
||||||
var roleOrNull = await DbSession.LoadAsync<IdentityRole>(roleId, cancellationToken);
|
var roleOrNull = await DbSession.LoadAsync<IdentityRole>(roleId, cancellationToken);
|
||||||
if (roleOrNull != null)
|
if (roleOrNull != null)
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user