@@ -109,6 +109,30 @@ namespace Umbraco.Core.Models
|
||||
IsApproved = true;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Constructor for creating a Member object
|
||||
/// </summary>
|
||||
/// <param name="name"></param>
|
||||
/// <param name="email"></param>
|
||||
/// <param name="username"></param>
|
||||
/// <param name="rawPasswordValue">
|
||||
/// The password value passed in to this parameter should be the encoded/encrypted/hashed format of the member's password
|
||||
/// </param>
|
||||
/// <param name="contentType"></param>
|
||||
/// <param name="isApproved"></param>
|
||||
public Member(string name, string email, string username, string rawPasswordValue, IMemberType contentType, bool isApproved)
|
||||
: base(name, -1, contentType, new PropertyCollection())
|
||||
{
|
||||
Mandate.ParameterNotNull(contentType, "contentType");
|
||||
|
||||
_contentTypeAlias = contentType.Alias;
|
||||
_contentType = contentType;
|
||||
_email = email;
|
||||
_username = username;
|
||||
_rawPasswordValue = rawPasswordValue;
|
||||
IsApproved = isApproved;
|
||||
}
|
||||
|
||||
private static readonly Lazy<PropertySelectors> Ps = new Lazy<PropertySelectors>();
|
||||
|
||||
private class PropertySelectors
|
||||
|
||||
@@ -72,6 +72,18 @@ namespace Umbraco.Core.Services
|
||||
/// <returns><see cref="IMembershipUser"/></returns>
|
||||
T CreateWithIdentity(string username, string email, string passwordValue, string memberTypeAlias);
|
||||
|
||||
/// <summary>
|
||||
/// Creates and persists a new <see cref="IMembershipUser"/>
|
||||
/// </summary>
|
||||
/// <remarks>An <see cref="IMembershipUser"/> can be of type <see cref="IMember"/> or <see cref="IUser"/></remarks>
|
||||
/// <param name="username">Username of the <see cref="IMembershipUser"/> to create</param>
|
||||
/// <param name="email">Email of the <see cref="IMembershipUser"/> to create</param>
|
||||
/// <param name="passwordValue">This value should be the encoded/encrypted/hashed value for the password that will be stored in the database</param>
|
||||
/// <param name="memberTypeAlias">Alias of the Type</param>
|
||||
/// <param name="isApproved">IsApproved of the <see cref="IMembershipUser"/> to create</param>
|
||||
/// <returns><see cref="IMembershipUser"/></returns>
|
||||
T CreateWithIdentity(string username, string email, string passwordValue, string memberTypeAlias, bool isApproved);
|
||||
|
||||
/// <summary>
|
||||
/// Gets an <see cref="IMembershipUser"/> by its provider key
|
||||
/// </summary>
|
||||
|
||||
@@ -826,6 +826,22 @@ namespace Umbraco.Core.Services
|
||||
return CreateMemberWithIdentity(username, email, username, passwordValue, memberType);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Creates and persists a new <see cref="IMember"/>
|
||||
/// </summary>
|
||||
/// <remarks>An <see cref="IMembershipUser"/> can be of type <see cref="IMember"/> or <see cref="IUser"/></remarks>
|
||||
/// <param name="username">Username of the <see cref="IMembershipUser"/> to create</param>
|
||||
/// <param name="email">Email of the <see cref="IMembershipUser"/> to create</param>
|
||||
/// <param name="passwordValue">This value should be the encoded/encrypted/hashed value for the password that will be stored in the database</param>
|
||||
/// <param name="memberTypeAlias">Alias of the Type</param>
|
||||
/// <param name="isApproved">Is the member approved</param>
|
||||
/// <returns><see cref="IMember"/></returns>
|
||||
IMember IMembershipMemberService<IMember>.CreateWithIdentity(string username, string email, string passwordValue, string memberTypeAlias, bool isApproved)
|
||||
{
|
||||
var memberType = FindMemberTypeByAlias(memberTypeAlias);
|
||||
return CreateMemberWithIdentity(username, email, username, passwordValue, memberType, isApproved);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Creates and persists a Member
|
||||
/// </summary>
|
||||
@@ -836,12 +852,13 @@ namespace Umbraco.Core.Services
|
||||
/// <param name="name">Name of the Member to create</param>
|
||||
/// <param name="passwordValue">This value should be the encoded/encrypted/hashed value for the password that will be stored in the database</param>
|
||||
/// <param name="memberType">MemberType the Member should be based on</param>
|
||||
/// <param name="isApproved">Optional IsApproved of the Member to create</param>
|
||||
/// <returns><see cref="IMember"/></returns>
|
||||
private IMember CreateMemberWithIdentity(string username, string email, string name, string passwordValue, IMemberType memberType)
|
||||
private IMember CreateMemberWithIdentity(string username, string email, string name, string passwordValue, IMemberType memberType, bool isApproved = true)
|
||||
{
|
||||
if (memberType == null) throw new ArgumentNullException("memberType");
|
||||
|
||||
var member = new Member(name, email.ToLower().Trim(), username, passwordValue, memberType);
|
||||
var member = new Member(name, email.ToLower().Trim(), username, passwordValue, memberType, isApproved);
|
||||
|
||||
using (var uow = UowProvider.GetUnitOfWork())
|
||||
{
|
||||
|
||||
@@ -19,7 +19,6 @@ namespace Umbraco.Core.Services
|
||||
/// </summary>
|
||||
public class UserService : ScopeRepositoryService, IUserService
|
||||
{
|
||||
|
||||
//TODO: We need to change the isUpgrading flag to use an app state enum as described here: http://issues.umbraco.org/issue/U4-6816
|
||||
// in the meantime, we will use a boolean which we are currently using during upgrades to ensure that a user object is not persisted during this phase, otherwise
|
||||
// exceptions can occur if the db is not in it's correct state.
|
||||
@@ -113,6 +112,26 @@ namespace Umbraco.Core.Services
|
||||
return CreateUserWithIdentity(username, email, passwordValue, userType);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Creates and persists a new <see cref="IUser"/>
|
||||
/// </summary>
|
||||
/// <param name="username">Username of the <see cref="IUser"/> to create</param>
|
||||
/// <param name="email">Email of the <see cref="IUser"/> to create</param>
|
||||
/// <param name="passwordValue">This value should be the encoded/encrypted/hashed value for the password that will be stored in the database</param>
|
||||
/// <param name="memberTypeAlias">Alias of the Type</param>
|
||||
/// <param name="isApproved">Is the member approved</param>
|
||||
/// <returns><see cref="IUser"/></returns>
|
||||
IUser IMembershipMemberService<IUser>.CreateWithIdentity(string username, string email, string passwordValue, string memberTypeAlias, bool isApproved)
|
||||
{
|
||||
var userType = GetUserTypeByAlias(memberTypeAlias);
|
||||
if (userType == null)
|
||||
{
|
||||
throw new EntityNotFoundException("The user type " + memberTypeAlias + " could not be resolved");
|
||||
}
|
||||
|
||||
return CreateUserWithIdentity(username, email, passwordValue, userType, isApproved);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Creates and persists a Member
|
||||
/// </summary>
|
||||
@@ -122,8 +141,9 @@ namespace Umbraco.Core.Services
|
||||
/// <param name="email">Email of the Member to create</param>
|
||||
/// <param name="passwordValue">This value should be the encoded/encrypted/hashed value for the password that will be stored in the database</param>
|
||||
/// <param name="userType">MemberType the Member should be based on</param>
|
||||
/// <param name="isApproved">Is the user approved</param>
|
||||
/// <returns><see cref="IUser"/></returns>
|
||||
private IUser CreateUserWithIdentity(string username, string email, string passwordValue, IUserType userType)
|
||||
private IUser CreateUserWithIdentity(string username, string email, string passwordValue, IUserType userType, bool isApproved = true)
|
||||
{
|
||||
if (userType == null) throw new ArgumentNullException("userType");
|
||||
|
||||
@@ -152,7 +172,7 @@ namespace Umbraco.Core.Services
|
||||
StartContentId = -1,
|
||||
StartMediaId = -1,
|
||||
IsLockedOut = false,
|
||||
IsApproved = true
|
||||
IsApproved = isApproved
|
||||
};
|
||||
//adding default sections content and media
|
||||
user.AddAllowedSection("content");
|
||||
|
||||
@@ -1,6 +1,4 @@
|
||||
using System;
|
||||
using System.Collections.Specialized;
|
||||
using System.Configuration.Provider;
|
||||
using System.Collections.Specialized;
|
||||
using System.Web.Security;
|
||||
using Moq;
|
||||
using NUnit.Framework;
|
||||
@@ -83,10 +81,10 @@ namespace Umbraco.Tests.Membership
|
||||
mServiceMock.Setup(service => service.GetByEmail("test@test.com")).Returns(() => null);
|
||||
mServiceMock.Setup(service => service.GetDefaultMemberType()).Returns("Member");
|
||||
mServiceMock.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) =>
|
||||
service => service.CreateWithIdentity(It.IsAny<string>(), It.IsAny<string>(), It.IsAny<string>(), It.IsAny<string>(), It.IsAny<bool>()))
|
||||
.Callback((string u, string e, string p, string m, bool isApproved) =>
|
||||
{
|
||||
createdMember = new Member("test", e, u, p, memberType);
|
||||
createdMember = new Member("test", e, u, p, memberType, isApproved);
|
||||
})
|
||||
.Returns(() => createdMember);
|
||||
var provider = new MembersMembershipProvider(mServiceMock.Object);
|
||||
@@ -114,10 +112,10 @@ namespace Umbraco.Tests.Membership
|
||||
mServiceMock.Setup(service => service.GetByEmail("test@test.com")).Returns(() => null);
|
||||
mServiceMock.Setup(service => service.GetDefaultMemberType()).Returns("Member");
|
||||
mServiceMock.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) =>
|
||||
service => service.CreateWithIdentity(It.IsAny<string>(), It.IsAny<string>(), It.IsAny<string>(), It.IsAny<string>(), It.IsAny<bool>()))
|
||||
.Callback((string u, string e, string p, string m, bool isApproved) =>
|
||||
{
|
||||
createdMember = new Member("test", e, u, p, memberType);
|
||||
createdMember = new Member("test", e, u, p, memberType, isApproved);
|
||||
})
|
||||
.Returns(() => createdMember);
|
||||
|
||||
@@ -147,10 +145,10 @@ namespace Umbraco.Tests.Membership
|
||||
mServiceMock.Setup(service => service.GetByEmail("test@test.com")).Returns(() => null);
|
||||
mServiceMock.Setup(service => service.GetDefaultMemberType()).Returns("Member");
|
||||
mServiceMock.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) =>
|
||||
service => service.CreateWithIdentity(It.IsAny<string>(), It.IsAny<string>(), It.IsAny<string>(), It.IsAny<string>(), It.IsAny<bool>()))
|
||||
.Callback((string u, string e, string p, string m, bool isApproved) =>
|
||||
{
|
||||
createdMember = new Member("test", e, u, p, memberType);
|
||||
createdMember = new Member("test", e, u, p, memberType, isApproved);
|
||||
})
|
||||
.Returns(() => createdMember);
|
||||
|
||||
|
||||
@@ -166,11 +166,11 @@ namespace Umbraco.Web.Security.Providers
|
||||
username,
|
||||
email,
|
||||
FormatPasswordForStorage(encodedPassword, salt),
|
||||
memberTypeAlias);
|
||||
memberTypeAlias,
|
||||
isApproved);
|
||||
|
||||
member.PasswordQuestion = passwordQuestion;
|
||||
member.RawPasswordAnswerValue = EncryptString(passwordAnswer);
|
||||
member.IsApproved = isApproved;
|
||||
member.LastLoginDate = DateTime.Now;
|
||||
member.LastPasswordChangeDate = DateTime.Now;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user