2014-01-06 16:18:25 +11:00
using System.Collections.Specialized ;
using System.ComponentModel.DataAnnotations ;
using System.Configuration.Provider ;
2013-08-28 12:48:04 +01:00
using System.Security.Cryptography ;
using System.Text ;
using System.Text.RegularExpressions ;
2013-09-04 15:42:01 +02:00
using System.Web.Hosting ;
2013-08-28 12:48:04 +01:00
using System.Web.Security ;
2013-05-24 08:13:24 -02:00
using Umbraco.Core ;
2013-10-10 14:00:35 +11:00
using Umbraco.Core.Models ;
2014-01-06 15:38:34 +11:00
using Umbraco.Core.Models.EntityBase ;
2014-02-17 13:16:28 +11:00
using Umbraco.Core.Security ;
2013-05-23 13:25:14 -02:00
using Umbraco.Core.Services ;
2013-09-04 15:42:01 +02:00
using Umbraco.Core.Models.Membership ;
2013-05-23 13:25:14 -02:00
2013-05-24 08:13:24 -02:00
namespace Umbraco.Web.Security.Providers
2013-05-23 13:25:14 -02:00
{
2013-08-28 12:48:04 +01:00
/// <summary>
/// Custom Membership Provider for Umbraco Members (User authentication for Frontend applications NOT umbraco CMS)
2013-05-23 13:25:14 -02:00
/// </summary>
2014-02-21 16:03:32 +11:00
public class MembersMembershipProvider : UmbracoMembershipProvider < IMembershipMemberService , IMember > , IUmbracoMemberTypeMembershipProvider
2013-05-23 13:25:14 -02:00
{
2013-12-24 14:03:18 +11:00
public MembersMembershipProvider ( )
2014-01-06 15:38:34 +11:00
: this ( ApplicationContext . Current . Services . MemberService )
2014-02-19 17:52:45 +11:00
{
2013-12-24 14:03:18 +11:00
}
2014-02-19 17:52:45 +11:00
public MembersMembershipProvider ( IMembershipMemberService < IMember > memberService )
2014-01-06 16:18:25 +11:00
: base ( memberService )
2013-05-23 13:25:14 -02:00
{
2014-02-17 18:02:29 +11:00
LockPropertyTypeAlias = Constants . Conventions . Member . IsLockedOut ;
LastLockedOutPropertyTypeAlias = Constants . Conventions . Member . LastLockoutDate ;
FailedPasswordAttemptsPropertyTypeAlias = Constants . Conventions . Member . FailedPasswordAttempts ;
ApprovedPropertyTypeAlias = Constants . Conventions . Member . IsApproved ;
CommentPropertyTypeAlias = Constants . Conventions . Member . Comments ;
LastLoginPropertyTypeAlias = Constants . Conventions . Member . LastLoginDate ;
LastPasswordChangedPropertyTypeAlias = Constants . Conventions . Member . LastPasswordChangeDate ;
PasswordRetrievalQuestionPropertyTypeAlias = Constants . Conventions . Member . PasswordQuestion ;
PasswordRetrievalAnswerPropertyTypeAlias = Constants . Conventions . Member . PasswordAnswer ;
2013-12-19 18:33:25 +11:00
}
2013-08-28 12:48:04 +01:00
2014-01-06 15:38:34 +11:00
private string _defaultMemberTypeAlias = "Member" ;
2013-08-28 12:48:04 +01:00
2014-01-06 15:38:34 +11:00
public override string ProviderName
2013-05-23 13:25:14 -02:00
{
2014-01-06 15:38:34 +11:00
get { return "MembersMembershipProvider" ; }
2013-12-20 14:01:10 +11:00
}
2013-05-23 13:25:14 -02:00
2014-01-23 15:11:54 +11:00
/// <summary>
/// For backwards compatibility, this provider supports this option
/// </summary>
public override bool AllowManuallyChangingPassword
{
get { return true ; }
}
2014-01-06 15:38:34 +11:00
protected override MembershipUser ConvertToMembershipUser ( IMember entity )
2013-05-23 13:25:14 -02:00
{
2014-01-06 15:38:34 +11:00
return entity . AsConcreteMembershipUser ( Name ) ;
2013-05-23 13:25:14 -02:00
}
2014-02-19 17:52:45 +11:00
public string LockPropertyTypeAlias { get ; private set ; }
public string LastLockedOutPropertyTypeAlias { get ; private set ; }
public string FailedPasswordAttemptsPropertyTypeAlias { get ; private set ; }
public string ApprovedPropertyTypeAlias { get ; private set ; }
public string CommentPropertyTypeAlias { get ; private set ; }
public string LastLoginPropertyTypeAlias { get ; private set ; }
public string LastPasswordChangedPropertyTypeAlias { get ; private set ; }
public string PasswordRetrievalQuestionPropertyTypeAlias { get ; private set ; }
public string PasswordRetrievalAnswerPropertyTypeAlias { get ; private set ; }
2014-02-17 13:16:28 +11:00
2014-01-06 16:18:25 +11:00
public override void Initialize ( string name , NameValueCollection config )
2013-12-20 14:01:10 +11:00
{
2014-01-06 15:38:34 +11:00
base . Initialize ( name , config ) ;
2013-12-20 14:01:10 +11:00
2014-01-06 16:18:25 +11:00
// test for membertype (if not specified, choose the first member type available)
if ( config [ "defaultMemberTypeAlias" ] ! = null )
{
_defaultMemberTypeAlias = config [ "defaultMemberTypeAlias" ] ;
}
else
{
_defaultMemberTypeAlias = MemberService . GetDefaultMemberType ( ) ;
if ( _defaultMemberTypeAlias . IsNullOrWhiteSpace ( ) )
{
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" ) ;
}
2014-02-17 13:16:28 +11:00
}
2013-05-23 13:25:14 -02:00
}
2013-12-20 14:01:10 +11:00
2014-01-06 15:38:34 +11:00
public override string DefaultMemberTypeAlias
2013-09-04 15:42:01 +02:00
{
2014-01-06 15:38:34 +11:00
get { return _defaultMemberTypeAlias ; }
2013-09-04 15:42:01 +02:00
}
2013-05-23 13:25:14 -02:00
}
2014-02-19 17:52:45 +11:00
}