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