From 5df30ac0cce8b3cdad8bcde4fb142cc8c322240c Mon Sep 17 00:00:00 2001 From: Shannon Date: Thu, 10 Oct 2013 17:22:57 +1100 Subject: [PATCH] tweaks to membership providers so if we cast we can specify the member type. --- .../Providers/MembersMembershipProvider.cs | 37 +++++-- .../members/MembersMembershipProvider.cs | 104 +++++++++++------- 2 files changed, 92 insertions(+), 49 deletions(-) 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); } ///