diff --git a/src/Orchard.Web/Modules/Orchard.Users/Orchard.Users.csproj b/src/Orchard.Web/Modules/Orchard.Users/Orchard.Users.csproj index c7bcf942c..7ed8d86b2 100644 --- a/src/Orchard.Web/Modules/Orchard.Users/Orchard.Users.csproj +++ b/src/Orchard.Web/Modules/Orchard.Users/Orchard.Users.csproj @@ -101,6 +101,7 @@ + diff --git a/src/Orchard.Web/Modules/Orchard.Users/Services/UserNameIdentityResolver.cs b/src/Orchard.Web/Modules/Orchard.Users/Services/UserNameIdentityResolver.cs new file mode 100644 index 000000000..63aa2e7ee --- /dev/null +++ b/src/Orchard.Web/Modules/Orchard.Users/Services/UserNameIdentityResolver.cs @@ -0,0 +1,37 @@ +using System.Collections.Generic; +using Orchard.ContentManagement; +using Orchard.Users.Models; + +namespace Orchard.Gallery.Services { + public class PackageIdentityResolverSelector : IIdentityResolverSelector { + private readonly IContentManager _contentManager; + + public PackageIdentityResolverSelector(IContentManager contentManager) { + _contentManager = contentManager; + } + + public IdentityResolverSelectorResult GetResolver(ContentIdentity contentIdentity) { + if (contentIdentity.Has("User.UserName")) { + return new IdentityResolverSelectorResult { + Priority = 0, + Resolve = ResolveIdentity + }; + } + + return null; + } + + private IEnumerable ResolveIdentity(ContentIdentity identity) { + var identifier = identity.Get("User.UserName"); + + if (identifier == null) { + return null; + } + + return _contentManager + .Query() + .Where(p => p.NormalizedUserName == identifier) + .List(); + } + } +} \ No newline at end of file