diff --git a/src/Umbraco.Core/Security/UmbracoMembersMembershipProviderBase.cs b/src/Umbraco.Core/Security/UmbracoMembersMembershipProviderBase.cs
new file mode 100644
index 0000000000..ce56c2708e
--- /dev/null
+++ b/src/Umbraco.Core/Security/UmbracoMembersMembershipProviderBase.cs
@@ -0,0 +1,23 @@
+using System.Collections.Specialized;
+
+namespace Umbraco.Core.Security
+{
+ ///
+ /// An interface for exposing the content type properties for storing membership data in when
+ /// a membership provider's data is backed by an Umbraco content type.
+ ///
+ public interface IUmbracoContentTypeMembershipProvider
+ {
+
+ string LockPropertyTypeAlias { get; }
+ string LastLockedOutPropertyTypeAlias { get; }
+ string FailedPasswordAttemptsPropertyTypeAlias { get; }
+ string ApprovedPropertyTypeAlias { get; }
+ string CommentPropertyTypeAlias { get; }
+ string LastLoginPropertyTypeAlias { get; }
+ string LastPasswordChangedPropertyTypeAlias { get; }
+ string PasswordRetrievalQuestionPropertyTypeAlias { get; }
+ string PasswordRetrievalAnswerPropertyTypeAlias { get; }
+
+ }
+}
\ No newline at end of file
diff --git a/src/Umbraco.Core/Umbraco.Core.csproj b/src/Umbraco.Core/Umbraco.Core.csproj
index 5682fd8ec0..b96e6db308 100644
--- a/src/Umbraco.Core/Umbraco.Core.csproj
+++ b/src/Umbraco.Core/Umbraco.Core.csproj
@@ -751,6 +751,7 @@
+
diff --git a/src/Umbraco.Web/Security/Providers/MembersMembershipProvider.cs b/src/Umbraco.Web/Security/Providers/MembersMembershipProvider.cs
index 70cf2201ee..bdbca3fa40 100644
--- a/src/Umbraco.Web/Security/Providers/MembersMembershipProvider.cs
+++ b/src/Umbraco.Web/Security/Providers/MembersMembershipProvider.cs
@@ -9,6 +9,7 @@ using System.Web.Security;
using Umbraco.Core;
using Umbraco.Core.Models;
using Umbraco.Core.Models.EntityBase;
+using Umbraco.Core.Security;
using Umbraco.Core.Services;
using Umbraco.Core.Models.Membership;
@@ -17,7 +18,7 @@ namespace Umbraco.Web.Security.Providers
///
/// Custom Membership Provider for Umbraco Members (User authentication for Frontend applications NOT umbraco CMS)
///
- public class MembersMembershipProvider : UmbracoServiceMembershipProvider
+ public class MembersMembershipProvider : UmbracoServiceMembershipProvider, IUmbracoContentTypeMembershipProvider
{
public MembersMembershipProvider()
: this(ApplicationContext.Current.Services.MemberService)
@@ -49,6 +50,16 @@ namespace Umbraco.Web.Security.Providers
return entity.AsConcreteMembershipUser(Name);
}
+ public string LockPropertyTypeAlias { get; protected set; }
+ public string LastLockedOutPropertyTypeAlias { get; protected set; }
+ public string FailedPasswordAttemptsPropertyTypeAlias { get; protected set; }
+ public string ApprovedPropertyTypeAlias { get; protected set; }
+ public string CommentPropertyTypeAlias { get; protected set; }
+ public string LastLoginPropertyTypeAlias { get; protected set; }
+ public string LastPasswordChangedPropertyTypeAlias { get; protected set; }
+ public string PasswordRetrievalQuestionPropertyTypeAlias { get; protected set; }
+ public string PasswordRetrievalAnswerPropertyTypeAlias { get; protected set; }
+
public override void Initialize(string name, NameValueCollection config)
{
base.Initialize(name, config);
@@ -65,7 +76,49 @@ namespace Umbraco.Web.Security.Providers
{
throw new ProviderException("No default MemberType alias is specified in the web.config string. Please add a 'defaultMemberTypeAlias' to the add element in the provider declaration in web.config");
}
- }
+ }
+
+ // test for approve status
+ if (config["umbracoApprovePropertyTypeAlias"] != null)
+ {
+ ApprovedPropertyTypeAlias = config["umbracoApprovePropertyTypeAlias"];
+ }
+ // test for lock attempts
+ if (config["umbracoLockPropertyTypeAlias"] != null)
+ {
+ LockPropertyTypeAlias = config["umbracoLockPropertyTypeAlias"];
+ }
+ if (config["umbracoLastLockedPropertyTypeAlias"] != null)
+ {
+ LastLockedOutPropertyTypeAlias = config["umbracoLastLockedPropertyTypeAlias"];
+ }
+ if (config["umbracoLastPasswordChangedPropertyTypeAlias"] != null)
+ {
+ LastPasswordChangedPropertyTypeAlias = config["umbracoLastPasswordChangedPropertyTypeAlias"];
+ }
+ if (config["umbracoFailedPasswordAttemptsPropertyTypeAlias"] != null)
+ {
+ FailedPasswordAttemptsPropertyTypeAlias = config["umbracoFailedPasswordAttemptsPropertyTypeAlias"];
+ }
+ // comment property
+ if (config["umbracoCommentPropertyTypeAlias"] != null)
+ {
+ CommentPropertyTypeAlias = config["umbracoCommentPropertyTypeAlias"];
+ }
+ // last login date
+ if (config["umbracoLastLoginPropertyTypeAlias"] != null)
+ {
+ LastLoginPropertyTypeAlias = config["umbracoLastLoginPropertyTypeAlias"];
+ }
+ // password retrieval
+ if (config["umbracoPasswordRetrievalQuestionPropertyTypeAlias"] != null)
+ {
+ PasswordRetrievalQuestionPropertyTypeAlias = config["umbracoPasswordRetrievalQuestionPropertyTypeAlias"];
+ }
+ if (config["umbracoPasswordRetrievalAnswerPropertyTypeAlias"] != null)
+ {
+ PasswordRetrievalAnswerPropertyTypeAlias = config["umbracoPasswordRetrievalAnswerPropertyTypeAlias"];
+ }
}
public override string DefaultMemberTypeAlias
diff --git a/src/Umbraco.Web/Security/Providers/UmbracoServiceMembershipProvider.cs b/src/Umbraco.Web/Security/Providers/UmbracoServiceMembershipProvider.cs
index 66892d316b..f2e79a769b 100644
--- a/src/Umbraco.Web/Security/Providers/UmbracoServiceMembershipProvider.cs
+++ b/src/Umbraco.Web/Security/Providers/UmbracoServiceMembershipProvider.cs
@@ -14,6 +14,8 @@ using Umbraco.Core.Services;
namespace Umbraco.Web.Security.Providers
{
+
+
///
/// Abstract Membership Provider that users any implementation of IMembershipMemberService{TEntity} service
///
diff --git a/src/umbraco.providers/members/UmbracoMembershipProvider.cs b/src/umbraco.providers/members/UmbracoMembershipProvider.cs
index 77ddfac649..8f6a056712 100644
--- a/src/umbraco.providers/members/UmbracoMembershipProvider.cs
+++ b/src/umbraco.providers/members/UmbracoMembershipProvider.cs
@@ -30,7 +30,7 @@ namespace umbraco.providers.members
/// Custom Membership Provider for Umbraco Members (User authentication for Frontend applications NOT umbraco CMS)
///
[Obsolete("This has been superceded by Umbraco.Web.Security.Providers.MembersMembershipProvider")]
- public class UmbracoMembershipProvider : UmbracoMembershipProviderBase
+ public class UmbracoMembershipProvider : UmbracoMembershipProviderBase, IUmbracoContentTypeMembershipProvider
{
public UmbracoMembershipProvider()
{