diff --git a/RavenDB.Identity/IdentityUserAuthToken.cs b/RavenDB.Identity/IdentityUserAuthToken.cs index c25c7ad..46a0fd9 100644 --- a/RavenDB.Identity/IdentityUserAuthToken.cs +++ b/RavenDB.Identity/IdentityUserAuthToken.cs @@ -49,9 +49,10 @@ namespace Raven.Identity var vals = new[] { userId, loginProvider, name } .Select(v => v ?? "[null]"); var collection = db.Conventions.GetCollectionName(typeof(IdentityUserAuthToken)); + var prefix = db.Conventions.TransformTypeCollectionNameToDocumentIdPrefix(collection); var separator = db.Conventions.IdentityPartsSeparator; var valsHash = CalculateHash(string.Join("-", vals)); - return collection + separator + valsHash.ToString(); + return prefix + separator + valsHash.ToString(); } private static int CalculateHash(string input) diff --git a/RavenDB.Identity/RoleStore.cs b/RavenDB.Identity/RoleStore.cs index 9883eb2..bb81c22 100644 --- a/RavenDB.Identity/RoleStore.cs +++ b/RavenDB.Identity/RoleStore.cs @@ -414,8 +414,9 @@ namespace Raven.Identity internal static string GetRavenIdFromRoleName(string role, IDocumentStore docStore) { var roleCollection = docStore.Conventions.GetCollectionName(typeof(TRole)); + var prefix = docStore.Conventions.TransformTypeCollectionNameToDocumentIdPrefix(roleCollection); var partSeparator = docStore.Conventions.IdentityPartsSeparator; - return roleCollection + partSeparator + role; + return prefix + partSeparator + role; } } } diff --git a/RavenDB.Identity/ServiceCollectionExtensions.cs b/RavenDB.Identity/ServiceCollectionExtensions.cs index caf6b45..fb682f7 100644 --- a/RavenDB.Identity/ServiceCollectionExtensions.cs +++ b/RavenDB.Identity/ServiceCollectionExtensions.cs @@ -50,7 +50,7 @@ namespace Raven.Identity .AddDefaultTokenProviders(); } - services.AddScoped, UserStore>(); + services.AddScoped, UserStore>(); services.AddScoped, RoleStore>(); return identityBuilder; diff --git a/RavenDB.Identity/UserStore.cs b/RavenDB.Identity/UserStore.cs index 7108d9a..c51e8a3 100644 --- a/RavenDB.Identity/UserStore.cs +++ b/RavenDB.Identity/UserStore.cs @@ -16,7 +16,8 @@ namespace Raven.Identity /// UserStore for entities in a RavenDB database. /// /// - public class UserStore : + /// + public class UserStore : IUserStore, IUserLoginStore, IUserClaimStore, @@ -32,6 +33,7 @@ namespace Raven.Identity IUserTwoFactorRecoveryCodeStore, IQueryableUserStore where TUser : IdentityUser + where TRole : IdentityRole { private bool _disposed; private readonly Func getSessionFunc; @@ -129,8 +131,9 @@ namespace Raven.Identity { var conventions = DbSession.Advanced.DocumentStore.Conventions; var entityName = conventions.GetCollectionName(typeof(TUser)); + var prefix = conventions.TransformTypeCollectionNameToDocumentIdPrefix(entityName); var separator = conventions.IdentityPartsSeparator; - var id = $"{entityName}{separator}{user.Email}"; + var id = $"{prefix}{separator}{user.Email}"; user.Id = id; } @@ -389,10 +392,11 @@ namespace Raven.Identity ThrowIfNullDisposedCancelled(user, cancellationToken); // 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 roleNameLowered = roleName.ToLowerInvariant(); - var roleId = identityUserPrefix + identityPartSeperator + roleNameLowered; + var roleId = prefix + identityPartSeperator + roleNameLowered; var existingRoleOrNull = await this.DbSession.LoadAsync(roleId, cancellationToken); if (existingRoleOrNull == null) { @@ -421,7 +425,7 @@ namespace Raven.Identity user.GetRolesList().RemoveAll(r => string.Equals(r, roleName, StringComparison.InvariantCultureIgnoreCase)); - var roleId = RoleStore.GetRavenIdFromRoleName(roleName, DbSession.Advanced.DocumentStore); + var roleId = RoleStore.GetRavenIdFromRoleName(roleName, DbSession.Advanced.DocumentStore); var roleOrNull = await DbSession.LoadAsync(roleId, cancellationToken); if (roleOrNull != null) {