diff --git a/src/Umbraco.Web/Security/Providers/MembersMembershipProvider.cs b/src/Umbraco.Web/Security/Providers/MembersMembershipProvider.cs
index c4b493c166..811fc6be52 100644
--- a/src/Umbraco.Web/Security/Providers/MembersMembershipProvider.cs
+++ b/src/Umbraco.Web/Security/Providers/MembersMembershipProvider.cs
@@ -257,8 +257,9 @@ namespace Umbraco.Web.Security.Providers
}
///
- /// Adds a new membership user to the data source.
+ /// Adds a new membership user to the data source with the specified member type
///
+ /// A specific member type to create the member for
/// The user name for the new user.
/// The password for the new user.
/// The e-mail address for the new user.
@@ -270,16 +271,16 @@ namespace Umbraco.Web.Security.Providers
///
/// A object populated with the information for the newly created user.
///
- public override MembershipUser CreateUser(string username, string password, string email, string passwordQuestion, string passwordAnswer,
+ public MembershipUser CreateUser(string memberType, string username, string password, string email, string passwordQuestion, string passwordAnswer,
bool isApproved, object providerUserKey, out MembershipCreateStatus status)
{
- LogHelper.Debug("Member signup requested: username -> " + username + ". email -> " +email);
+ LogHelper.Debug("Member signup requested: username -> " + username + ". email -> " + email);
// Validate password
if (IsPasswordValid(password) == false)
{
- status = MembershipCreateStatus.InvalidPassword;
- return null;
+ status = MembershipCreateStatus.InvalidPassword;
+ return null;
}
// Validate email
@@ -327,21 +328,41 @@ namespace Umbraco.Web.Security.Providers
return null;
}
- var member = MemberService.CreateMember(email, username, password, DefaultMemberTypeAlias);
+ var member = MemberService.CreateMember(email, username, password, memberType);
member.IsApproved = isApproved;
member.PasswordQuestion = passwordQuestion;
member.PasswordAnswer = passwordAnswer;
-
+
//encrypts/hashes the password depending on the settings
member.Password = EncryptOrHashPassword(member.Password);
MemberService.Save(member);
-
+
status = MembershipCreateStatus.Success;
return member.AsConcreteMembershipUser();
}
+ ///
+ /// Adds a new membership user to the data source.
+ ///
+ /// The user name for the new user.
+ /// The password for the new user.
+ /// The e-mail address for the new user.
+ /// The password question for the new user.
+ /// The password answer for the new user
+ /// Whether or not the new user is approved to be validated.
+ /// The unique identifier from the membership data source for the user.
+ /// A enumeration value indicating whether the user was created successfully.
+ ///
+ /// A object populated with the information for the newly created user.
+ ///
+ public override MembershipUser CreateUser(string username, string password, string email, string passwordQuestion, string passwordAnswer,
+ bool isApproved, object providerUserKey, out MembershipCreateStatus status)
+ {
+ return CreateUser(DefaultMemberTypeAlias, username, password, email, passwordQuestion, passwordAnswer, isApproved, providerUserKey, out status);
+ }
+
///
/// Processes a request to update the password question and answer for a membership user.
///
diff --git a/src/umbraco.providers/members/MembersMembershipProvider.cs b/src/umbraco.providers/members/MembersMembershipProvider.cs
index cf3121268c..2e906d7f8d 100644
--- a/src/umbraco.providers/members/MembersMembershipProvider.cs
+++ b/src/umbraco.providers/members/MembersMembershipProvider.cs
@@ -358,6 +358,68 @@ namespace umbraco.providers.members
}
}
+ ///
+ /// Adds a new membership user to the data source.
+ ///
+ ///
+ /// The user name for the new user.
+ /// The password for the new user.
+ /// The e-mail address for the new user.
+ /// The password question for the new user.
+ /// The password answer for the new user
+ /// Whether or not the new user is approved to be validated.
+ /// The unique identifier from the membership data source for the user.
+ /// A enumeration value indicating whether the user was created successfully.
+ ///
+ /// A object populated with the information for the newly created user.
+ ///
+ public MembershipUser CreateUser(string memberTypeAlias, string username, string password, string email, string passwordQuestion,
+ string passwordAnswer, bool isApproved, object providerUserKey, out MembershipCreateStatus status)
+ {
+ if (Member.GetMemberFromLoginName(username) != null)
+ status = MembershipCreateStatus.DuplicateUserName;
+ else if (Member.GetMemberFromEmail(email) != null && RequiresUniqueEmail)
+ status = MembershipCreateStatus.DuplicateEmail;
+ else
+ {
+ var memberType = MemberType.GetByAlias(memberTypeAlias);
+ if (memberType == null)
+ {
+ throw new InvalidOperationException("Could not find a member type with alias " + memberTypeAlias + ". Ensure your membership provider configuration is up to date and that the default member type exists.");
+ }
+
+ Member m = Member.MakeNew(username, email, memberType, User.GetUser(0));
+ m.Password = password;
+
+ MembershipUser mUser =
+ ConvertToMembershipUser(m);
+
+ // custom fields
+ if (!String.IsNullOrEmpty(m_PasswordRetrievalQuestionPropertyTypeAlias))
+ UpdateMemberProperty(m, m_PasswordRetrievalQuestionPropertyTypeAlias, passwordQuestion);
+
+ if (!String.IsNullOrEmpty(m_PasswordRetrievalAnswerPropertyTypeAlias))
+ UpdateMemberProperty(m, m_PasswordRetrievalAnswerPropertyTypeAlias, passwordAnswer);
+
+ if (!String.IsNullOrEmpty(m_ApprovedPropertyTypeAlias))
+ UpdateMemberProperty(m, m_ApprovedPropertyTypeAlias, isApproved);
+
+ if (!String.IsNullOrEmpty(m_LastLoginPropertyTypeAlias))
+ {
+ mUser.LastActivityDate = DateTime.Now;
+ UpdateMemberProperty(m, m_LastLoginPropertyTypeAlias, mUser.LastActivityDate);
+ }
+
+ // save
+ m.Save();
+
+ status = MembershipCreateStatus.Success;
+
+ return mUser;
+ }
+ return null;
+ }
+
///
/// Adds a new membership user to the data source.
///
@@ -375,47 +437,7 @@ namespace umbraco.providers.members
public override MembershipUser CreateUser(string username, string password, string email, string passwordQuestion,
string passwordAnswer, bool isApproved, object providerUserKey, out MembershipCreateStatus status)
{
- if (Member.GetMemberFromLoginName(username) != null)
- status = MembershipCreateStatus.DuplicateUserName;
- else if (Member.GetMemberFromEmail(email) != null && RequiresUniqueEmail)
- status = MembershipCreateStatus.DuplicateEmail;
- else
- {
- var memberType = MemberType.GetByAlias(m_DefaultMemberTypeAlias);
- if (memberType == null)
- {
- throw new InvalidOperationException("Could not find a member type with alias " + m_DefaultMemberTypeAlias + ". Ensure your membership provider configuration is up to date and that the default member type exists.");
- }
-
- Member m = Member.MakeNew(username, email, memberType, User.GetUser(0));
- m.Password = password;
-
- MembershipUser mUser =
- ConvertToMembershipUser(m);
-
- // custom fields
- if (!String.IsNullOrEmpty(m_PasswordRetrievalQuestionPropertyTypeAlias))
- UpdateMemberProperty(m, m_PasswordRetrievalQuestionPropertyTypeAlias, passwordQuestion);
-
- if (!String.IsNullOrEmpty(m_PasswordRetrievalAnswerPropertyTypeAlias))
- UpdateMemberProperty(m, m_PasswordRetrievalAnswerPropertyTypeAlias, passwordAnswer);
-
- if (!String.IsNullOrEmpty(m_ApprovedPropertyTypeAlias))
- UpdateMemberProperty(m, m_ApprovedPropertyTypeAlias, isApproved);
-
- if (!String.IsNullOrEmpty(m_LastLoginPropertyTypeAlias)) {
- mUser.LastActivityDate = DateTime.Now;
- UpdateMemberProperty(m, m_LastLoginPropertyTypeAlias, mUser.LastActivityDate);
- }
-
- // save
- m.Save();
-
- status = MembershipCreateStatus.Success;
-
- return mUser;
- }
- return null;
+ return CreateUser(m_DefaultMemberTypeAlias, username, password, email, passwordQuestion, passwordAnswer, isApproved, providerUserKey, out status);
}
///