Merge pull request #15 from InfinitTechnologies/master

Changed ID creation to use TransformTypeCollectionNameToDocumentIdPrefix for collection name.
This commit is contained in:
Judah Gabriel Himango
2019-07-08 15:26:27 -05:00
committed by GitHub
4 changed files with 14 additions and 8 deletions
+2 -1
View File
@@ -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)
+2 -1
View File
@@ -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;
+9 -5
View File
@@ -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)
{ {