Fixed bug in MVC sample.
This commit is contained in:
@@ -11,6 +11,7 @@ using Microsoft.AspNetCore.Http;
|
||||
using Microsoft.Extensions.Logging;
|
||||
using Raven.Client.Documents.Session;
|
||||
using Raven.Client.Exceptions;
|
||||
using Raven.Client.Documents;
|
||||
|
||||
namespace Raven.Identity
|
||||
{
|
||||
@@ -133,7 +134,9 @@ namespace Raven.Identity
|
||||
{
|
||||
throw new ArgumentNullException(nameof(role.Name));
|
||||
}
|
||||
await AsyncSession.StoreAsync(role, $"IdentityRoles/{role.Name}");
|
||||
|
||||
var roleId = GetRavenIdFromRoleName(role.Name, AsyncSession.Advanced.DocumentStore);
|
||||
await AsyncSession.StoreAsync(role, roleId);
|
||||
await SaveChanges(cancellationToken);
|
||||
return IdentityResult.Success;
|
||||
}
|
||||
@@ -269,7 +272,9 @@ namespace Raven.Identity
|
||||
{
|
||||
cancellationToken.ThrowIfCancellationRequested();
|
||||
ThrowIfDisposed();
|
||||
return AsyncSession.LoadAsync<TRole>($"IdentityRoles/{normalizedName.ToLower()}");
|
||||
|
||||
var roleId = GetRavenIdFromRoleName(normalizedName, AsyncSession.Advanced.DocumentStore);
|
||||
return AsyncSession.LoadAsync<TRole>(roleId);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -286,7 +291,8 @@ namespace Raven.Identity
|
||||
{
|
||||
throw new ArgumentNullException(nameof(role));
|
||||
}
|
||||
return Task.FromResult(role.Name.ToLower());
|
||||
|
||||
return Task.FromResult(role.Name.ToLowerInvariant());
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -404,5 +410,11 @@ namespace Raven.Identity
|
||||
/// <param name="claim">The associated claim.</param>
|
||||
/// <returns>The role claim entity.</returns>
|
||||
protected abstract TRoleClaim CreateRoleClaim(TRole role, Claim claim);
|
||||
|
||||
internal static string GetRavenIdFromRoleName(string role, IDocumentStore docStore)
|
||||
{
|
||||
var partSeparator = docStore.Conventions.IdentityPartsSeparator;
|
||||
return "IdentityRole" + partSeparator + role;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -387,8 +387,8 @@ namespace Raven.Identity
|
||||
public async Task AddToRoleAsync(TUser user, string roleName, CancellationToken cancellationToken)
|
||||
{
|
||||
ThrowIfNullDisposedCancelled(user, cancellationToken);
|
||||
|
||||
var roleNameLowered = roleName.ToLower();
|
||||
|
||||
var roleNameLowered = roleName.ToLowerInvariant();
|
||||
if (!user.Roles.Contains(roleNameLowered, StringComparer.OrdinalIgnoreCase))
|
||||
{
|
||||
user.GetRolesList().Add(roleNameLowered);
|
||||
@@ -419,7 +419,7 @@ namespace Raven.Identity
|
||||
|
||||
user.GetRolesList().RemoveAll(r => string.Equals(r, roleName, StringComparison.OrdinalIgnoreCase));
|
||||
|
||||
var roleId = "IdentityRoles/" + roleName.ToLower();
|
||||
var roleId = RoleStore<IdentityRole>.GetRavenIdFromRoleName(roleName, DbSession.Advanced.DocumentStore);
|
||||
var roleOrNull = await DbSession.LoadAsync<IdentityRole>(roleId, cancellationToken);
|
||||
if (roleOrNull != null)
|
||||
{
|
||||
|
||||
@@ -15,7 +15,7 @@ namespace Sample.Mvc.Controllers
|
||||
{
|
||||
public RavenController(IAsyncDocumentSession dbSession)
|
||||
{
|
||||
this.DbSession = DbSession;
|
||||
this.DbSession = dbSession;
|
||||
|
||||
// RavenDB best practice: during save, wait for the indexes to update.
|
||||
// This way, Post-Redirect-Get scenarios won't be affected by stale indexes.
|
||||
|
||||
@@ -2,7 +2,8 @@
|
||||
ViewData["Title"] = "Sign in";
|
||||
}
|
||||
|
||||
<h1>Hi! Please sign in. (Not registered? <a href="/account/register">Register here</a>.)</h1>
|
||||
<h1>Hi! Please sign in</h1>
|
||||
<p>Not registered? <a href="/account/register">Register here</a>.</p>
|
||||
|
||||
<form action="/account/signin" method="post">
|
||||
<div class="form-group">
|
||||
|
||||
Reference in New Issue
Block a user