Refactoring of Umbraco Members auth. Work items: 30237, 30334, 30350, 30342

This commit is contained in:
hartvig
2011-09-06 07:08:15 -02:00
parent 39706538f9
commit 8b87f0fd46

View File

@@ -218,7 +218,7 @@ namespace umbraco.cms.businesslogic.member
// Test for e-mail
if (Email != "" && Member.GetMemberFromEmail(Email) != null)
throw new Exception(String.Format("Duplicate Email! A member with the e-mail {0} already exists", Email));
else if (Member.GetMemberFromLoginName(LoginName) != null)
else if (Member.GetMemberFromLoginName(loginName) != null)
throw new Exception(String.Format("Duplicate User name! A member with the user name {0} already exists", Name));
Guid newId = Guid.NewGuid();
@@ -756,11 +756,13 @@ namespace umbraco.cms.businesslogic.member
// zb-00035 #29931 : helper methods to handle member state
[Obsolete("Only use .NET Membership APIs to handle state now", true)]
static void SetMemberState(Member member)
{
SetMemberState(member.Id, member.UniqueId, member.LoginName);
}
[Obsolete("Only use .NET Membership APIs to handle state now", true)]
static void SetMemberState(int memberId, Guid memberGuid, string memberLogin)
{
string value = string.Format("{0}+{1}+{2}", memberId, memberGuid, memberLogin);
@@ -768,11 +770,13 @@ namespace umbraco.cms.businesslogic.member
StateHelper.Cookies.Member.SetValue(value);
}
[Obsolete("Only use .NET Membership APIs to handle state now", true)]
static void SetMemberState(Member member, bool useSession, double cookieDays)
{
SetMemberState(member.Id, member.UniqueId, member.LoginName, useSession, cookieDays);
}
[Obsolete("Only use .NET Membership APIs to handle state now", true)]
static void SetMemberState(int memberId, Guid memberGuid, string memberLogin, bool useSession, double cookieDays)
{
string value = string.Format("{0}+{1}+{2}", memberId, memberGuid, memberLogin);
@@ -784,6 +788,7 @@ namespace umbraco.cms.businesslogic.member
StateHelper.Cookies.Member.SetValue(value, cookieDays);
}
[Obsolete("Only use .NET Membership APIs to handle state now", true)]
static void ClearMemberState()
{
// zb-00004 #29956 : refactor cookies names & handling
@@ -791,6 +796,7 @@ namespace umbraco.cms.businesslogic.member
FormsAuthentication.SignOut();
}
[Obsolete("Only use .NET Membership APIs to handle state now", true)]
static MemberState GetMemberState()
{
// NH: Refactor to fix issue 30171, where auth using pure .NET Members doesn't clear old Umbraco cookie, thus this method gets the previous
@@ -897,7 +903,10 @@ namespace umbraco.cms.businesslogic.member
{
// Add cookie with member-id, guid and loginname
// zb-00035 #29931 : cleanup member state management
SetMemberState(m);
// NH 4.7.1: We'll no longer use legacy cookies to handle Umbraco Members
//SetMemberState(m);
FormsAuthentication.SetAuthCookie(m.LoginName, true);
//cache the member
var cachedMember = Cache.GetCacheItem<Member>(GetCacheKey(m.Id), m_Locker,
@@ -912,8 +921,6 @@ namespace umbraco.cms.businesslogic.member
return m;
});
FormsAuthentication.SetAuthCookie(m.LoginName, true);
m.FireAfterAddToCache(e);
}
}
@@ -943,7 +950,10 @@ namespace umbraco.cms.businesslogic.member
if (!e.Cancel)
{
// zb-00035 #29931 : cleanup member state management
SetMemberState(m, UseSession, TimespanForCookie.TotalDays);
// NH 4.7.1: We'll no longer use Umbraco legacy cookies to handle members
//SetMemberState(m, UseSession, TimespanForCookie.TotalDays);
FormsAuthentication.SetAuthCookie(m.LoginName, !UseSession);
//cache the member
var cachedMember = Cache.GetCacheItem<Member>(GetCacheKey(m.Id), m_Locker,
@@ -959,7 +969,6 @@ namespace umbraco.cms.businesslogic.member
});
FormsAuthentication.SetAuthCookie(m.LoginName, false);
m.FireAfterAddToCache(e);
}
@@ -1021,11 +1030,13 @@ namespace umbraco.cms.businesslogic.member
public static void ClearMemberFromClient(int NodeId)
{
// zb-00035 #29931 : cleanup member state management
ClearMemberState();
RemoveMemberFromCache(NodeId);
// NH 4.7.1: We'll no longer use legacy Umbraco cookies to handle members
// ClearMemberState();
FormsAuthentication.SignOut();
RemoveMemberFromCache(NodeId);
}
/// <summary>
@@ -1123,6 +1134,9 @@ namespace umbraco.cms.businesslogic.member
{
int.TryParse(Membership.GetUser().ProviderUserKey.ToString(), out _currentMemberId);
}
// NH 4.7.1: We'll no longer use legacy Umbraco cookies to handle members
/*
else
{
// zb-00035 #29931 : cleanup member state management
@@ -1137,7 +1151,7 @@ namespace umbraco.cms.businesslogic.member
// zb-00035 #29931 : cleanup member state management
ClearMemberState();
}
*/
return _currentMemberId;
}
@@ -1152,7 +1166,7 @@ namespace umbraco.cms.businesslogic.member
if (HttpContext.Current.User.Identity.IsAuthenticated)
{
// zb-00035 #29931 : cleanup member state management
MemberState ms = GetMemberState();
/*MemberState ms = GetMemberState();
if (ms == null || ms.MemberId == 0)
return null;
@@ -1161,9 +1175,14 @@ namespace umbraco.cms.businesslogic.member
Member member = GetMemberFromCache(ms.MemberId);
if (member == null)
member = new Member(ms.MemberId);
*/
if (HttpContext.Current.User.Identity.IsAuthenticated || (member.UniqueId == ms.MemberGuid && member.LoginName == ms.MemberLogin))
return member;
int _currentMemberId = 0;
if (int.TryParse(Membership.GetUser().ProviderUserKey.ToString(), out _currentMemberId))
{
Member m = new Member(_currentMemberId);
return m;
}
}
}
catch