Files
Umbraco-CMS/src/Umbraco.Web/Models/Membership/UmbracoMembershipMember.cs
2019-11-25 23:53:12 +11:00

123 lines
4.1 KiB
C#

using System;
using System.Web.Security;
using Umbraco.Core.Models.Membership;
namespace Umbraco.Web.Models.Membership
{
internal class UmbracoMembershipMember : MembershipUser
{
private readonly IMembershipUser _member;
private readonly string _userName;
private readonly object _providerUserKey;
private readonly bool _isLockedOut;
private readonly DateTime _lastLockoutDate;
private readonly DateTime _creationDate;
private DateTime _lastLoginDate;
private readonly DateTime _lastPasswordChangedDate;
private readonly string _providerName;
private string _email;
private string _comment;
private bool _isApproved;
private DateTime _lastActivityDate;
//NOTE: We are only overriding the properties that matter, we don't override things like IsOnline since that is handled with the sub-class and the membership providers.
//NOTE: We are not calling the base constructor which will validate that a provider with the specified name exists which causes issues with unit tests. The ctor
// validation for that doesn't need to be there anyways (have checked the source).
public UmbracoMembershipMember(IMembershipUser member, string providerName)
{
_member = member;
//NOTE: We are copying the values here so that everything is consistent with how the underlying built-in ASP.Net membership user
// handles data! We don't want to do anything differently there but since we cannot use their ctor we'll need to handle this logic ourselves.
if (member.Username != null)
_userName = member.Username.Trim();
if (member.Email != null)
_email = member.Email.Trim();
_providerName = providerName;
_providerUserKey = member.Key;
_comment = member.Comments;
_isApproved = member.IsApproved;
_isLockedOut = member.IsLockedOut;
_creationDate = member.CreateDate.ToUniversalTime();
_lastLoginDate = member.LastLoginDate.ToUniversalTime();
// TODO: We currently don't really have any place to store this data!!
_lastActivityDate = member.LastLoginDate.ToUniversalTime();
_lastPasswordChangedDate = member.LastPasswordChangeDate.ToUniversalTime();
_lastLockoutDate = member.LastLockoutDate.ToUniversalTime();
}
internal IMembershipUser Member
{
get { return _member; }
}
public override string UserName
{
get { return _userName; }
}
public override object ProviderUserKey
{
get { return _providerUserKey; }
}
public override string Email
{
get { return _email; }
set { _email = value; }
}
public override string PasswordQuestion => string.Empty;
public override string Comment
{
get { return _comment; }
set { _comment = value; }
}
public override bool IsApproved
{
get { return _isApproved; }
set { _isApproved = value; }
}
public override bool IsLockedOut
{
get { return _isLockedOut; }
}
public override DateTime LastLockoutDate
{
get { return _lastLockoutDate; }
}
public override DateTime CreationDate
{
get { return _creationDate; }
}
public override DateTime LastLoginDate
{
get { return _lastLoginDate; }
set { _lastLoginDate = value; }
}
public override DateTime LastActivityDate
{
get { return _lastActivityDate; }
set { _lastActivityDate = value; }
}
public override DateTime LastPasswordChangedDate
{
get { return _lastPasswordChangedDate; }
}
public override string ProviderName
{
get { return _providerName; }
}
}
}