Merge temp-u4-8447 into temp-u4-8497
This commit is contained in:
@@ -32,25 +32,29 @@ namespace Umbraco.Core.Security
|
||||
}
|
||||
|
||||
#region Static Create methods
|
||||
|
||||
/// <summary>
|
||||
/// Creates a BackOfficeUserManager instance with all default options and the default BackOfficeUserManager
|
||||
/// </summary>
|
||||
/// <param name="options"></param>
|
||||
/// <param name="userService"></param>
|
||||
/// <param name="memberTypeService"></param>
|
||||
/// <param name="externalLoginService"></param>
|
||||
/// <param name="membershipProvider"></param>
|
||||
/// <returns></returns>
|
||||
public static BackOfficeUserManager Create(
|
||||
IdentityFactoryOptions<BackOfficeUserManager> options,
|
||||
IUserService userService,
|
||||
IMemberTypeService memberTypeService,
|
||||
IExternalLoginService externalLoginService,
|
||||
MembershipProviderBase membershipProvider)
|
||||
{
|
||||
if (options == null) throw new ArgumentNullException("options");
|
||||
if (userService == null) throw new ArgumentNullException("userService");
|
||||
if (memberTypeService == null) throw new ArgumentNullException("memberTypeService");
|
||||
if (externalLoginService == null) throw new ArgumentNullException("externalLoginService");
|
||||
|
||||
var manager = new BackOfficeUserManager(new BackOfficeUserStore(userService, externalLoginService, membershipProvider));
|
||||
var manager = new BackOfficeUserManager(new BackOfficeUserStore(userService, memberTypeService, externalLoginService, membershipProvider));
|
||||
manager.InitUserManager(manager, membershipProvider, options);
|
||||
return manager;
|
||||
}
|
||||
|
||||
@@ -30,12 +30,14 @@ namespace Umbraco.Core.Security
|
||||
//IQueryableUserStore<BackOfficeIdentityUser, int>
|
||||
{
|
||||
private readonly IUserService _userService;
|
||||
private readonly IMemberTypeService _memberTypeService;
|
||||
private readonly IExternalLoginService _externalLoginService;
|
||||
private bool _disposed = false;
|
||||
|
||||
public BackOfficeUserStore(IUserService userService, IExternalLoginService externalLoginService, MembershipProviderBase usersMembershipProvider)
|
||||
public BackOfficeUserStore(IUserService userService, IMemberTypeService memberTypeService, IExternalLoginService externalLoginService, MembershipProviderBase usersMembershipProvider)
|
||||
{
|
||||
_userService = userService;
|
||||
_memberTypeService = memberTypeService;
|
||||
_externalLoginService = externalLoginService;
|
||||
if (userService == null) throw new ArgumentNullException("userService");
|
||||
if (usersMembershipProvider == null) throw new ArgumentNullException("usersMembershipProvider");
|
||||
@@ -69,7 +71,7 @@ namespace Umbraco.Core.Security
|
||||
if (user == null) throw new ArgumentNullException("user");
|
||||
|
||||
var userType = _userService.GetUserTypeByAlias(
|
||||
user.UserTypeAlias.IsNullOrWhiteSpace() ? _userService.GetDefaultMemberType() : user.UserTypeAlias);
|
||||
user.UserTypeAlias.IsNullOrWhiteSpace() ? _memberTypeService.GetDefault() : user.UserTypeAlias);
|
||||
|
||||
var member = new User(userType)
|
||||
{
|
||||
|
||||
@@ -22,7 +22,6 @@ namespace Umbraco.Core.Services
|
||||
/// </summary>
|
||||
public class ContentService : RepositoryService, IContentService, IContentServiceOperations
|
||||
{
|
||||
private IContentTypeService _contentTypeService;
|
||||
|
||||
#region Constructors
|
||||
|
||||
@@ -34,20 +33,6 @@ namespace Umbraco.Core.Services
|
||||
{
|
||||
}
|
||||
|
||||
// don't change or remove this, will need it later
|
||||
private IContentTypeService ContentTypeService => _contentTypeService;
|
||||
//// handle circular dependencies
|
||||
//internal IContentTypeService ContentTypeService
|
||||
//{
|
||||
// get
|
||||
// {
|
||||
// if (_contentTypeService == null)
|
||||
// throw new InvalidOperationException("ContentService.ContentTypeService has not been initialized.");
|
||||
// return _contentTypeService;
|
||||
// }
|
||||
// set { _contentTypeService = value; }
|
||||
//}
|
||||
|
||||
#endregion
|
||||
|
||||
#region Count
|
||||
@@ -332,6 +317,8 @@ namespace Umbraco.Core.Services
|
||||
var repo = uow.CreateRepository<IContentRepository>();
|
||||
repo.AddOrUpdate(content);
|
||||
|
||||
uow.Flush(); // need everything so we can serialize
|
||||
|
||||
Saved.RaiseEvent(new SaveEventArgs<IContent>(content, false), this);
|
||||
TreeChanged.RaiseEvent(new TreeChange<IContent>(content, TreeChangeTypes.RefreshNode).ToEventArgs(), this);
|
||||
}
|
||||
@@ -2545,7 +2532,7 @@ namespace Umbraco.Core.Services
|
||||
|
||||
using (var uow = UowProvider.CreateUnitOfWork())
|
||||
{
|
||||
uow.ReadLock(Constants.Locks.ContentTree);
|
||||
uow.ReadLock(Constants.Locks.ContentTypes);
|
||||
|
||||
var repository = uow.CreateRepository<IContentTypeRepository>();
|
||||
var query = repository.Query.Where(x => x.Alias == contentTypeAlias);
|
||||
|
||||
@@ -13,33 +13,18 @@ namespace Umbraco.Core.Services
|
||||
/// </summary>
|
||||
internal class ContentTypeService : ContentTypeServiceBase<IContentTypeRepository, IContentType, IContentTypeService>, IContentTypeService
|
||||
{
|
||||
private IContentService _contentService;
|
||||
|
||||
public ContentTypeService(IDatabaseUnitOfWorkProvider provider, ILogger logger, IEventMessagesFactory eventMessagesFactory, IContentService contentService)
|
||||
: base(provider, logger, eventMessagesFactory)
|
||||
{
|
||||
_contentService = contentService;
|
||||
ContentService = contentService;
|
||||
}
|
||||
|
||||
protected override IContentTypeService Instance => this;
|
||||
|
||||
// beware! order is important to avoid deadlocks
|
||||
protected override int[] ReadLockIds { get; } = { Constants.Locks.ContentTypes };
|
||||
protected override int[] WriteLockIds { get; } = { Constants.Locks.ContentTree, Constants.Locks.ContentTypes };
|
||||
|
||||
// don't change or remove this, will need it later
|
||||
private IContentService ContentService => _contentService;
|
||||
//// handle circular dependencies
|
||||
//internal IContentService ContentService
|
||||
//{
|
||||
// get
|
||||
// {
|
||||
// if (_contentService == null)
|
||||
// throw new InvalidOperationException("ContentTypeService.ContentService has not been initialized.");
|
||||
// return _contentService;
|
||||
// }
|
||||
// set { _contentService = value; }
|
||||
//}
|
||||
private IContentService ContentService { get; }
|
||||
|
||||
protected override Guid ContainedObjectType => Constants.ObjectTypes.DocumentTypeGuid;
|
||||
|
||||
|
||||
@@ -46,14 +46,6 @@ namespace Umbraco.Core.Services
|
||||
/// <returns><see cref="System.int"/> with number of Members or Users for passed in type</returns>
|
||||
int GetCount(MemberCountType countType);
|
||||
|
||||
/// <summary>
|
||||
/// Gets the default MemberType alias
|
||||
/// </summary>
|
||||
/// <remarks>By default we'll return the 'writer', but we need to check it exists. If it doesn't we'll
|
||||
/// return the first type that is not an admin, otherwise if there's only one we will return that one.</remarks>
|
||||
/// <returns>Alias of the default MemberType</returns>
|
||||
string GetDefaultMemberType();
|
||||
|
||||
/// <summary>
|
||||
/// Checks if a Member with the username exists
|
||||
/// </summary>
|
||||
|
||||
@@ -19,7 +19,6 @@ namespace Umbraco.Core.Services
|
||||
/// </summary>
|
||||
public class MediaService : RepositoryService, IMediaService, IMediaServiceOperations
|
||||
{
|
||||
private IMediaTypeService _mediaTypeService;
|
||||
|
||||
#region Constructors
|
||||
|
||||
@@ -30,20 +29,6 @@ namespace Umbraco.Core.Services
|
||||
: base(provider, logger, eventMessagesFactory)
|
||||
{ }
|
||||
|
||||
// don't change or remove this, will need it later
|
||||
private IMediaTypeService MediaTypeService => _mediaTypeService;
|
||||
//// handle circular dependencies
|
||||
//internal IMediaTypeService MediaTypeService
|
||||
//{
|
||||
// get
|
||||
// {
|
||||
// if (_mediaTypeService == null)
|
||||
// throw new InvalidOperationException("MediaService.MediaTypeService has not been initialized.");
|
||||
// return _mediaTypeService;
|
||||
// }
|
||||
// set { _mediaTypeService = value; }
|
||||
//}
|
||||
|
||||
#endregion
|
||||
|
||||
#region Count
|
||||
@@ -1363,7 +1348,7 @@ namespace Umbraco.Core.Services
|
||||
|
||||
using (var uow = UowProvider.CreateUnitOfWork())
|
||||
{
|
||||
uow.ReadLock(Constants.Locks.MediaTree);
|
||||
uow.ReadLock(Constants.Locks.MediaTypes);
|
||||
|
||||
var repository = uow.CreateRepository<IMediaTypeRepository>();
|
||||
var query = repository.Query.Where(x => x.Alias == mediaTypeAlias);
|
||||
|
||||
@@ -10,12 +10,10 @@ namespace Umbraco.Core.Services
|
||||
{
|
||||
internal class MediaTypeService : ContentTypeServiceBase<IMediaTypeRepository, IMediaType, IMediaTypeService>, IMediaTypeService
|
||||
{
|
||||
private IMediaService _mediaService;
|
||||
|
||||
public MediaTypeService(IDatabaseUnitOfWorkProvider provider, ILogger logger, IEventMessagesFactory eventMessagesFactory, IMediaService mediaService)
|
||||
: base(provider, logger, eventMessagesFactory)
|
||||
{
|
||||
_mediaService = mediaService;
|
||||
MediaService = mediaService;
|
||||
}
|
||||
|
||||
protected override IMediaTypeService Instance => this;
|
||||
@@ -24,19 +22,7 @@ namespace Umbraco.Core.Services
|
||||
protected override int[] ReadLockIds { get; } = { Constants.Locks.MediaTypes };
|
||||
protected override int[] WriteLockIds { get; } = { Constants.Locks.MediaTree, Constants.Locks.MediaTypes };
|
||||
|
||||
// don't remove, will need it later
|
||||
private IMediaService MediaService => _mediaService;
|
||||
//// handle circular dependencies
|
||||
//internal IMediaService MediaService
|
||||
//{
|
||||
// get
|
||||
// {
|
||||
// if (_mediaService == null)
|
||||
// throw new InvalidOperationException("MediaTypeService.MediaService has not been initialized.");
|
||||
// return _mediaService;
|
||||
// }
|
||||
// set { _mediaService = value; }
|
||||
//}
|
||||
private IMediaService MediaService { get; }
|
||||
|
||||
protected override Guid ContainedObjectType => Constants.ObjectTypes.MediaTypeGuid;
|
||||
|
||||
|
||||
@@ -22,7 +22,6 @@ namespace Umbraco.Core.Services
|
||||
public class MemberService : RepositoryService, IMemberService
|
||||
{
|
||||
private readonly IMemberGroupService _memberGroupService;
|
||||
private IMemberTypeService _memberTypeService;
|
||||
|
||||
#region Constructor
|
||||
|
||||
@@ -37,20 +36,6 @@ namespace Umbraco.Core.Services
|
||||
_memberGroupService = memberGroupService;
|
||||
}
|
||||
|
||||
// don't change or remove this, will need it later
|
||||
private IMemberTypeService MemberTypeService => _memberTypeService;
|
||||
//// handle circular dependencies
|
||||
//internal IMemberTypeService MemberTypeService
|
||||
//{
|
||||
// get
|
||||
// {
|
||||
// if (_memberTypeService == null)
|
||||
// throw new InvalidOperationException("MemberService.MemberTypeService has not been initialized.");
|
||||
// return _memberTypeService;
|
||||
// }
|
||||
// set { _memberTypeService = value; }
|
||||
//}
|
||||
|
||||
#endregion
|
||||
|
||||
#region Count
|
||||
@@ -1329,16 +1314,21 @@ namespace Umbraco.Core.Services
|
||||
|
||||
private IMemberType GetMemberType(string memberTypeAlias)
|
||||
{
|
||||
var memberType = MemberTypeService.Get(memberTypeAlias);
|
||||
if (memberType == null)
|
||||
throw new Exception(string.Format("No MemberType matching alias: \"{0}\".", memberTypeAlias));
|
||||
return memberType;
|
||||
}
|
||||
Mandate.ParameterNotNullOrEmpty(memberTypeAlias, nameof(memberTypeAlias));
|
||||
|
||||
[Obsolete("use MemberTypeService.GetDefault()")] // fixme kill!
|
||||
public string GetDefaultMemberType()
|
||||
{
|
||||
return MemberTypeService.GetDefault();
|
||||
using (var uow = UowProvider.CreateUnitOfWork())
|
||||
{
|
||||
uow.ReadLock(Constants.Locks.MemberTypes);
|
||||
|
||||
var repository = uow.CreateRepository<IMemberTypeRepository>();
|
||||
var memberType = repository.Get(memberTypeAlias);
|
||||
|
||||
if (memberType == null)
|
||||
throw new Exception($"No MemberType matching the passed in Alias: '{memberTypeAlias}' was found"); // causes rollback
|
||||
|
||||
uow.Complete();
|
||||
return memberType;
|
||||
}
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
@@ -10,12 +10,10 @@ namespace Umbraco.Core.Services
|
||||
{
|
||||
internal class MemberTypeService : ContentTypeServiceBase<IMemberTypeRepository, IMemberType, IMemberTypeService>, IMemberTypeService
|
||||
{
|
||||
private IMemberService _memberService;
|
||||
|
||||
public MemberTypeService(IDatabaseUnitOfWorkProvider provider, ILogger logger, IEventMessagesFactory eventMessagesFactory, IMemberService memberService)
|
||||
: base(provider, logger, eventMessagesFactory)
|
||||
{
|
||||
_memberService = memberService;
|
||||
MemberService = memberService;
|
||||
}
|
||||
|
||||
protected override IMemberTypeService Instance => this;
|
||||
@@ -24,19 +22,7 @@ namespace Umbraco.Core.Services
|
||||
protected override int[] ReadLockIds { get; } = { Constants.Locks.MemberTypes };
|
||||
protected override int[] WriteLockIds { get; } = { Constants.Locks.MemberTree, Constants.Locks.MemberTypes };
|
||||
|
||||
// don't remove, will need it later
|
||||
private IMemberService MemberService => _memberService;
|
||||
//// handle circular dependencies
|
||||
//internal IMemberService MemberService
|
||||
//{
|
||||
// get
|
||||
// {
|
||||
// if (_memberService == null)
|
||||
// throw new InvalidOperationException("MemberTypeService.MemberService has not been initialized.");
|
||||
// return _memberService;
|
||||
// }
|
||||
// set { _memberService = value; }
|
||||
//}
|
||||
private IMemberService MemberService { get; }
|
||||
|
||||
protected override Guid ContainedObjectType => Constants.ObjectTypes.MemberTypeGuid;
|
||||
|
||||
|
||||
@@ -18,20 +18,20 @@ namespace Umbraco.Tests.Membership
|
||||
[Test]
|
||||
public void Sets_Default_Member_Type_From_Service_On_Init()
|
||||
{
|
||||
var mServiceMock = new Mock<IMembershipMemberService>();
|
||||
var provider = new MembersMembershipProvider(mServiceMock.Object);
|
||||
mServiceMock.Setup(service => service.GetDefaultMemberType()).Returns("Blah");
|
||||
var memberTypeServiceMock = new Mock<IMemberTypeService>();
|
||||
memberTypeServiceMock.Setup(x => x.GetDefault()).Returns("Blah");
|
||||
var provider = new MembersMembershipProvider(Mock.Of<IMembershipMemberService>(), memberTypeServiceMock.Object);
|
||||
provider.Initialize("test", new NameValueCollection());
|
||||
|
||||
|
||||
Assert.AreEqual("Blah", provider.DefaultMemberTypeAlias);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void Sets_Default_Member_Type_From_Config_On_Init()
|
||||
{
|
||||
var mServiceMock = new Mock<IMembershipMemberService>();
|
||||
var provider = new MembersMembershipProvider(mServiceMock.Object);
|
||||
mServiceMock.Setup(service => service.GetDefaultMemberType()).Returns("Blah");
|
||||
var memberTypeServiceMock = new Mock<IMemberTypeService>();
|
||||
memberTypeServiceMock.Setup(x => x.GetDefault()).Returns("Blah");
|
||||
var provider = new MembersMembershipProvider(Mock.Of<IMembershipMemberService>(), memberTypeServiceMock.Object);
|
||||
provider.Initialize("test", new NameValueCollection { { "defaultMemberTypeAlias", "Hello" } });
|
||||
|
||||
Assert.AreEqual("Hello", provider.DefaultMemberTypeAlias);
|
||||
@@ -40,11 +40,12 @@ namespace Umbraco.Tests.Membership
|
||||
[Test]
|
||||
public void Create_User_Already_Exists()
|
||||
{
|
||||
var mServiceMock = new Mock<IMembershipMemberService>();
|
||||
mServiceMock.Setup(service => service.Exists("test")).Returns(true);
|
||||
mServiceMock.Setup(service => service.GetDefaultMemberType()).Returns("Member");
|
||||
var memberTypeServiceMock = new Mock<IMemberTypeService>();
|
||||
memberTypeServiceMock.Setup(x => x.GetDefault()).Returns("Member");
|
||||
var membershipServiceMock = new Mock<IMembershipMemberService>();
|
||||
membershipServiceMock.Setup(service => service.Exists("test")).Returns(true);
|
||||
|
||||
var provider = new MembersMembershipProvider(mServiceMock.Object);
|
||||
var provider = new MembersMembershipProvider(membershipServiceMock.Object, memberTypeServiceMock.Object);
|
||||
provider.Initialize("test", new NameValueCollection());
|
||||
|
||||
MembershipCreateStatus status;
|
||||
@@ -56,11 +57,12 @@ namespace Umbraco.Tests.Membership
|
||||
[Test]
|
||||
public void Create_User_Requires_Unique_Email()
|
||||
{
|
||||
var mServiceMock = new Mock<IMembershipMemberService>();
|
||||
mServiceMock.Setup(service => service.GetByEmail("test@test.com")).Returns(() => new Member("test", MockedContentTypes.CreateSimpleMemberType()));
|
||||
mServiceMock.Setup(service => service.GetDefaultMemberType()).Returns("Member");
|
||||
var memberTypeServiceMock = new Mock<IMemberTypeService>();
|
||||
memberTypeServiceMock.Setup(x => x.GetDefault()).Returns("Member");
|
||||
var membershipServiceMock = new Mock<IMembershipMemberService>();
|
||||
membershipServiceMock.Setup(service => service.GetByEmail("test@test.com")).Returns(() => new Member("test", MockedContentTypes.CreateSimpleMemberType()));
|
||||
|
||||
var provider = new MembersMembershipProvider(mServiceMock.Object);
|
||||
var provider = new MembersMembershipProvider(membershipServiceMock.Object, memberTypeServiceMock.Object);
|
||||
provider.Initialize("test", new NameValueCollection { { "requiresUniqueEmail", "true" } });
|
||||
|
||||
MembershipCreateStatus status;
|
||||
@@ -78,20 +80,21 @@ namespace Umbraco.Tests.Membership
|
||||
{
|
||||
memberType.AddPropertyType(p.Value);
|
||||
}
|
||||
var mServiceMock = new Mock<IMembershipMemberService>();
|
||||
mServiceMock.Setup(service => service.Exists("test")).Returns(false);
|
||||
mServiceMock.Setup(service => service.GetByEmail("test@test.com")).Returns(() => null);
|
||||
mServiceMock.Setup(service => service.GetDefaultMemberType()).Returns("Member");
|
||||
mServiceMock.Setup(
|
||||
var memberTypeServiceMock = new Mock<IMemberTypeService>();
|
||||
memberTypeServiceMock.Setup(x => x.GetDefault()).Returns("Member");
|
||||
var membershipServiceMock = new Mock<IMembershipMemberService>();
|
||||
membershipServiceMock.Setup(service => service.Exists("test")).Returns(false);
|
||||
membershipServiceMock.Setup(service => service.GetByEmail("test@test.com")).Returns(() => null);
|
||||
membershipServiceMock.Setup(
|
||||
service => service.CreateWithIdentity(It.IsAny<string>(), It.IsAny<string>(), It.IsAny<string>(), It.IsAny<string>()))
|
||||
.Callback((string u, string e, string p, string m) =>
|
||||
{
|
||||
createdMember = new Member("test", e, u, p, memberType);
|
||||
})
|
||||
.Returns(() => createdMember);
|
||||
var provider = new MembersMembershipProvider(mServiceMock.Object);
|
||||
var provider = new MembersMembershipProvider(membershipServiceMock.Object, memberTypeServiceMock.Object);
|
||||
provider.Initialize("test", new NameValueCollection());
|
||||
|
||||
|
||||
|
||||
MembershipCreateStatus status;
|
||||
provider.CreateUser("test", "test", "testtest$1", "test@test.com", "test", "test", true, "test", out status);
|
||||
@@ -109,11 +112,12 @@ namespace Umbraco.Tests.Membership
|
||||
{
|
||||
memberType.AddPropertyType(p.Value);
|
||||
}
|
||||
var mServiceMock = new Mock<IMembershipMemberService>();
|
||||
mServiceMock.Setup(service => service.Exists("test")).Returns(false);
|
||||
mServiceMock.Setup(service => service.GetByEmail("test@test.com")).Returns(() => null);
|
||||
mServiceMock.Setup(service => service.GetDefaultMemberType()).Returns("Member");
|
||||
mServiceMock.Setup(
|
||||
var memberTypeServiceMock = new Mock<IMemberTypeService>();
|
||||
memberTypeServiceMock.Setup(x => x.GetDefault()).Returns("Member");
|
||||
var membershipServiceMock = new Mock<IMembershipMemberService>();
|
||||
membershipServiceMock.Setup(service => service.Exists("test")).Returns(false);
|
||||
membershipServiceMock.Setup(service => service.GetByEmail("test@test.com")).Returns(() => null);
|
||||
membershipServiceMock.Setup(
|
||||
service => service.CreateWithIdentity(It.IsAny<string>(), It.IsAny<string>(), It.IsAny<string>(), It.IsAny<string>()))
|
||||
.Callback((string u, string e, string p, string m) =>
|
||||
{
|
||||
@@ -121,9 +125,9 @@ namespace Umbraco.Tests.Membership
|
||||
})
|
||||
.Returns(() => createdMember);
|
||||
|
||||
var provider = new MembersMembershipProvider(mServiceMock.Object);
|
||||
var provider = new MembersMembershipProvider(membershipServiceMock.Object, memberTypeServiceMock.Object);
|
||||
provider.Initialize("test", new NameValueCollection { { "passwordFormat", "Encrypted" } });
|
||||
|
||||
|
||||
|
||||
MembershipCreateStatus status;
|
||||
provider.CreateUser("test", "test", "testtest$1", "test@test.com", "test", "test", true, "test", out status);
|
||||
@@ -142,11 +146,12 @@ namespace Umbraco.Tests.Membership
|
||||
{
|
||||
memberType.AddPropertyType(p.Value);
|
||||
}
|
||||
var mServiceMock = new Mock<IMembershipMemberService>();
|
||||
mServiceMock.Setup(service => service.Exists("test")).Returns(false);
|
||||
mServiceMock.Setup(service => service.GetByEmail("test@test.com")).Returns(() => null);
|
||||
mServiceMock.Setup(service => service.GetDefaultMemberType()).Returns("Member");
|
||||
mServiceMock.Setup(
|
||||
var memberTypeServiceMock = new Mock<IMemberTypeService>();
|
||||
memberTypeServiceMock.Setup(x => x.GetDefault()).Returns("Member");
|
||||
var membershipServiceMock = new Mock<IMembershipMemberService>();
|
||||
membershipServiceMock.Setup(service => service.Exists("test")).Returns(false);
|
||||
membershipServiceMock.Setup(service => service.GetByEmail("test@test.com")).Returns(() => null);
|
||||
membershipServiceMock.Setup(
|
||||
service => service.CreateWithIdentity(It.IsAny<string>(), It.IsAny<string>(), It.IsAny<string>(), It.IsAny<string>()))
|
||||
.Callback((string u, string e, string p, string m) =>
|
||||
{
|
||||
@@ -154,20 +159,20 @@ namespace Umbraco.Tests.Membership
|
||||
})
|
||||
.Returns(() => createdMember);
|
||||
|
||||
var provider = new MembersMembershipProvider(mServiceMock.Object);
|
||||
var provider = new MembersMembershipProvider(membershipServiceMock.Object, memberTypeServiceMock.Object);
|
||||
provider.Initialize("test", new NameValueCollection { { "passwordFormat", "Hashed" }, { "hashAlgorithmType", "HMACSHA256" } });
|
||||
|
||||
|
||||
|
||||
MembershipCreateStatus status;
|
||||
provider.CreateUser("test", "test", "testtest$1", "test@test.com", "test", "test", true, "test", out status);
|
||||
|
||||
Assert.AreNotEqual("test", createdMember.RawPasswordValue);
|
||||
|
||||
|
||||
string salt;
|
||||
var storedPassword = provider.StoredPassword(createdMember.RawPasswordValue, out salt);
|
||||
var hashedPassword = provider.EncryptOrHashPassword("testtest$1", salt);
|
||||
Assert.AreEqual(hashedPassword, storedPassword);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
@@ -10,7 +10,7 @@ NOTES:
|
||||
* Compression/Combination/Minification is not enabled unless debug="false" is specified on the 'compiliation' element in the web.config
|
||||
* A new version will invalidate both client and server cache and create new persisted files
|
||||
-->
|
||||
<clientDependency version="1187893721" fileDependencyExtensions=".js,.css" loggerType="Umbraco.Web.UI.CdfLogger, umbraco">
|
||||
<clientDependency version="304117493" fileDependencyExtensions=".js,.css" loggerType="Umbraco.Web.UI.CdfLogger, umbraco">
|
||||
|
||||
<!--
|
||||
This section is used for Web Forms only, the enableCompositeFiles="true" is optional and by default is set to true.
|
||||
|
||||
@@ -72,6 +72,7 @@ namespace Umbraco.Web.Security.Identity
|
||||
(options, owinContext) => BackOfficeUserManager.Create(
|
||||
options,
|
||||
appContext.Services.UserService,
|
||||
appContext.Services.MemberTypeService,
|
||||
appContext.Services.ExternalLoginService,
|
||||
userMembershipProvider));
|
||||
|
||||
|
||||
@@ -21,11 +21,11 @@ namespace Umbraco.Web.Security.Providers
|
||||
public class MembersMembershipProvider : UmbracoMembershipProvider<IMembershipMemberService, IMember>, IUmbracoMemberTypeMembershipProvider
|
||||
{
|
||||
public MembersMembershipProvider()
|
||||
: this(ApplicationContext.Current.Services.MemberService)
|
||||
: this(ApplicationContext.Current.Services.MemberService, ApplicationContext.Current.Services.MemberTypeService)
|
||||
{
|
||||
}
|
||||
|
||||
public MembersMembershipProvider(IMembershipMemberService<IMember> memberService)
|
||||
public MembersMembershipProvider(IMembershipMemberService<IMember> memberService, IMemberTypeService memberTypeService)
|
||||
: base(memberService)
|
||||
{
|
||||
LockPropertyTypeAlias = Constants.Conventions.Member.IsLockedOut;
|
||||
@@ -37,8 +37,10 @@ namespace Umbraco.Web.Security.Providers
|
||||
LastPasswordChangedPropertyTypeAlias = Constants.Conventions.Member.LastPasswordChangeDate;
|
||||
PasswordRetrievalQuestionPropertyTypeAlias = Constants.Conventions.Member.PasswordQuestion;
|
||||
PasswordRetrievalAnswerPropertyTypeAlias = Constants.Conventions.Member.PasswordAnswer;
|
||||
_memberTypeService = memberTypeService;
|
||||
}
|
||||
|
||||
private readonly IMemberTypeService _memberTypeService;
|
||||
private string _defaultMemberTypeAlias = "Member";
|
||||
private volatile bool _hasDefaultMember = false;
|
||||
private static readonly object Locker = new object();
|
||||
@@ -99,7 +101,7 @@ namespace Umbraco.Web.Security.Providers
|
||||
{
|
||||
if (_hasDefaultMember == false)
|
||||
{
|
||||
_defaultMemberTypeAlias = MemberService.GetDefaultMemberType();
|
||||
_defaultMemberTypeAlias = _memberTypeService.GetDefault();
|
||||
if (_defaultMemberTypeAlias.IsNullOrWhiteSpace())
|
||||
{
|
||||
throw new ProviderException("No default user type alias is specified in the web.config string. Please add a 'defaultUserTypeAlias' to the add element in the provider declaration in web.config");
|
||||
|
||||
@@ -18,15 +18,17 @@ namespace Umbraco.Web.Security.Providers
|
||||
{
|
||||
|
||||
public UsersMembershipProvider()
|
||||
: this(ApplicationContext.Current.Services.UserService)
|
||||
: this(ApplicationContext.Current.Services.UserService, ApplicationContext.Current.Services.MemberTypeService)
|
||||
{
|
||||
}
|
||||
|
||||
public UsersMembershipProvider(IMembershipMemberService<IUser> memberService)
|
||||
public UsersMembershipProvider(IMembershipMemberService<IUser> memberService, IMemberTypeService memberTypeService)
|
||||
: base(memberService)
|
||||
{
|
||||
_memberTypeService = memberTypeService;
|
||||
}
|
||||
|
||||
private readonly IMemberTypeService _memberTypeService;
|
||||
private string _defaultMemberTypeAlias = "writer";
|
||||
private volatile bool _hasDefaultMember = false;
|
||||
private static readonly object Locker = new object();
|
||||
@@ -68,7 +70,7 @@ namespace Umbraco.Web.Security.Providers
|
||||
{
|
||||
if (_hasDefaultMember == false)
|
||||
{
|
||||
_defaultMemberTypeAlias = MemberService.GetDefaultMemberType();
|
||||
_defaultMemberTypeAlias = _memberTypeService.GetDefault();
|
||||
if (_defaultMemberTypeAlias.IsNullOrWhiteSpace())
|
||||
{
|
||||
throw new ProviderException("No default user type alias is specified in the web.config string. Please add a 'defaultUserTypeAlias' to the add element in the provider declaration in web.config");
|
||||
|
||||
Reference in New Issue
Block a user