Cleaning up a bit of the legacy member class
Conflicts: src/umbraco.cms/businesslogic/member/Member.cs
This commit is contained in:
@@ -9,6 +9,13 @@ namespace Umbraco.Core.Services
|
||||
/// </summary>
|
||||
internal interface IMemberService : IMembershipMemberService
|
||||
{
|
||||
/// <summary>
|
||||
/// Checks if a member with the id exists
|
||||
/// </summary>
|
||||
/// <param name="id"></param>
|
||||
/// <returns></returns>
|
||||
bool Exists(int id);
|
||||
|
||||
IMember GetById(int id);
|
||||
IMember GetByKey(Guid id);
|
||||
IEnumerable<IMember> GetMembersByMemberType(string memberTypeAlias);
|
||||
|
||||
@@ -35,6 +35,19 @@ namespace Umbraco.Core.Services
|
||||
|
||||
#region IMemberService Implementation
|
||||
|
||||
/// <summary>
|
||||
/// Checks if a member with the id exists
|
||||
/// </summary>
|
||||
/// <param name="id"></param>
|
||||
/// <returns></returns>
|
||||
public bool Exists(int id)
|
||||
{
|
||||
using (var repository = _repositoryFactory.CreateMemberRepository(_uowProvider.GetUnitOfWork()))
|
||||
{
|
||||
return repository.Exists(id);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Gets a Member by its integer Id
|
||||
/// </summary>
|
||||
@@ -43,7 +56,7 @@ namespace Umbraco.Core.Services
|
||||
public IMember GetById(int id)
|
||||
{
|
||||
using (var repository = _repositoryFactory.CreateMemberRepository(_uowProvider.GetUnitOfWork()))
|
||||
{
|
||||
{
|
||||
return repository.Get(id);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -8,6 +8,7 @@ using System.Web;
|
||||
using System.Xml;
|
||||
using Umbraco.Core;
|
||||
using Umbraco.Core.Cache;
|
||||
using Umbraco.Core.Logging;
|
||||
using Umbraco.Core.Models.Rdbms;
|
||||
using umbraco.cms.businesslogic.cache;
|
||||
using umbraco.BusinessLogic;
|
||||
@@ -34,11 +35,9 @@ namespace umbraco.cms.businesslogic.member
|
||||
public static readonly string UmbracoRoleProviderName = Constants.Conventions.Member.UmbracoRoleProviderName;
|
||||
public static readonly Guid _objectType = new Guid(Constants.ObjectTypes.Member);
|
||||
|
||||
private static readonly object m_Locker = new object();
|
||||
|
||||
// zb-00004 #29956 : refactor cookies names & handling
|
||||
|
||||
private const string m_SQLOptimizedMany = @"
|
||||
private const string _sQLOptimizedMany = @"
|
||||
select
|
||||
umbracoNode.id, umbracoNode.uniqueId, umbracoNode.level,
|
||||
umbracoNode.parentId, umbracoNode.path, umbracoNode.sortOrder, umbracoNode.createDate,
|
||||
@@ -53,11 +52,11 @@ namespace umbraco.cms.businesslogic.member
|
||||
#endregion
|
||||
|
||||
#region Private members
|
||||
private string m_Text;
|
||||
private string m_Email;
|
||||
private string m_Password;
|
||||
private string m_LoginName;
|
||||
private Hashtable m_Groups = null;
|
||||
private string _text;
|
||||
private string _email;
|
||||
private string _password;
|
||||
private string _loginName;
|
||||
private Hashtable _groups = null;
|
||||
#endregion
|
||||
|
||||
#region Constructors
|
||||
@@ -103,13 +102,13 @@ namespace umbraco.cms.businesslogic.member
|
||||
public static IEnumerable<Member> GetAllAsList()
|
||||
{
|
||||
var tmp = new List<Member>();
|
||||
using (IRecordsReader dr = SqlHelper.ExecuteReader(
|
||||
string.Format(m_SQLOptimizedMany.Trim(), "1=1", "umbracoNode.text"),
|
||||
using (var dr = SqlHelper.ExecuteReader(
|
||||
string.Format(_sQLOptimizedMany.Trim(), "1=1", "umbracoNode.text"),
|
||||
SqlHelper.CreateParameter("@nodeObjectType", Member._objectType)))
|
||||
{
|
||||
while (dr.Read())
|
||||
{
|
||||
Member m = new Member(dr.GetInt("id"), true);
|
||||
var m = new Member(dr.GetInt("id"), true);
|
||||
m.PopulateMemberFromReader(dr);
|
||||
tmp.Add(m);
|
||||
}
|
||||
@@ -126,13 +125,13 @@ namespace umbraco.cms.businesslogic.member
|
||||
{
|
||||
|
||||
var tmp = new List<Member>();
|
||||
using (IRecordsReader dr = SqlHelper.ExecuteReader(
|
||||
string.Format(m_SQLOptimizedMany.Trim(), "LOWER(SUBSTRING(text, 1, 1)) NOT IN ('a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z')", "umbracoNode.text"),
|
||||
using (var dr = SqlHelper.ExecuteReader(
|
||||
string.Format(_sQLOptimizedMany.Trim(), "LOWER(SUBSTRING(text, 1, 1)) NOT IN ('a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z')", "umbracoNode.text"),
|
||||
SqlHelper.CreateParameter("@nodeObjectType", Member._objectType)))
|
||||
{
|
||||
while (dr.Read())
|
||||
{
|
||||
Member m = new Member(dr.GetInt("id"), true);
|
||||
var m = new Member(dr.GetInt("id"), true);
|
||||
m.PopulateMemberFromReader(dr);
|
||||
tmp.Add(m);
|
||||
}
|
||||
@@ -156,8 +155,8 @@ namespace umbraco.cms.businesslogic.member
|
||||
string field = matchByNameInsteadOfLogin ? "umbracoNode.text" : "cmsMember.loginName";
|
||||
|
||||
var tmp = new List<Member>();
|
||||
using (IRecordsReader dr = SqlHelper.ExecuteReader(
|
||||
string.Format(m_SQLOptimizedMany.Trim(),
|
||||
using (var dr = SqlHelper.ExecuteReader(
|
||||
string.Format(_sQLOptimizedMany.Trim(),
|
||||
string.Format("{0} like @letter", field),
|
||||
"umbracoNode.text"),
|
||||
SqlHelper.CreateParameter("@nodeObjectType", Member._objectType),
|
||||
@@ -165,7 +164,7 @@ namespace umbraco.cms.businesslogic.member
|
||||
{
|
||||
while (dr.Read())
|
||||
{
|
||||
Member m = new Member(dr.GetInt("id"), true);
|
||||
var m = new Member(dr.GetInt("id"), true);
|
||||
m.PopulateMemberFromReader(dr);
|
||||
tmp.Add(m);
|
||||
}
|
||||
@@ -219,20 +218,20 @@ namespace umbraco.cms.businesslogic.member
|
||||
throw new ArgumentException("The loginname must be different from an empty string", "loginName");
|
||||
|
||||
// Test for e-mail
|
||||
if (Email != "" && Member.GetMemberFromEmail(Email) != null && Membership.Providers[UmbracoMemberProviderName].RequiresUniqueEmail)
|
||||
if (Email != "" && GetMemberFromEmail(Email) != null && Membership.Providers[UmbracoMemberProviderName].RequiresUniqueEmail)
|
||||
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 (GetMemberFromLoginName(loginName) != null)
|
||||
throw new Exception(String.Format("Duplicate User name! A member with the user name {0} already exists", loginName));
|
||||
|
||||
// Lowercased to prevent duplicates
|
||||
Email = Email.ToLower();
|
||||
Guid newId = Guid.NewGuid();
|
||||
var newId = Guid.NewGuid();
|
||||
|
||||
//create the cms node first
|
||||
CMSNode newNode = MakeNew(-1, _objectType, u.Id, 1, Name, newId);
|
||||
var newNode = MakeNew(-1, _objectType, u.Id, 1, Name, newId);
|
||||
|
||||
//we need to create an empty member and set the underlying text property
|
||||
Member tmp = new Member(newId, true);
|
||||
var tmp = new Member(newId, true);
|
||||
tmp.SetText(Name);
|
||||
|
||||
//create the content data for the new member
|
||||
@@ -246,9 +245,9 @@ namespace umbraco.cms.businesslogic.member
|
||||
SqlHelper.CreateParameter("@email", Email));
|
||||
|
||||
//read the whole object from the db
|
||||
Member m = new Member(newId);
|
||||
var m = new Member(newId);
|
||||
|
||||
NewEventArgs e = new NewEventArgs();
|
||||
var e = new NewEventArgs();
|
||||
|
||||
m.OnNew(e);
|
||||
|
||||
@@ -270,7 +269,7 @@ namespace umbraco.cms.businesslogic.member
|
||||
throw new ArgumentException("The username of a Member must be different from an emptry string", "loginName");
|
||||
if (IsMember(loginName))
|
||||
{
|
||||
object o = SqlHelper.ExecuteScalar<object>(
|
||||
var o = SqlHelper.ExecuteScalar<object>(
|
||||
"select nodeID from cmsMember where LoginName = @loginName",
|
||||
SqlHelper.CreateParameter("@loginName", loginName));
|
||||
|
||||
@@ -301,7 +300,7 @@ namespace umbraco.cms.businesslogic.member
|
||||
if (string.IsNullOrEmpty(email))
|
||||
return null;
|
||||
|
||||
object o = SqlHelper.ExecuteScalar<object>(
|
||||
var o = SqlHelper.ExecuteScalar<object>(
|
||||
"select nodeID from cmsMember where Email = @email",
|
||||
SqlHelper.CreateParameter("@email", email.ToLower()));
|
||||
|
||||
@@ -328,7 +327,7 @@ namespace umbraco.cms.businesslogic.member
|
||||
return null;
|
||||
|
||||
var tmp = new List<Member>();
|
||||
using (IRecordsReader dr = SqlHelper.ExecuteReader(string.Format(m_SQLOptimizedMany.Trim(),
|
||||
using (var dr = SqlHelper.ExecuteReader(string.Format(_sQLOptimizedMany.Trim(),
|
||||
"Email = @email",
|
||||
"umbracoNode.text"),
|
||||
SqlHelper.CreateParameter("@nodeObjectType", Member._objectType),
|
||||
@@ -336,7 +335,7 @@ namespace umbraco.cms.businesslogic.member
|
||||
{
|
||||
while (dr.Read())
|
||||
{
|
||||
Member m = new Member(dr.GetInt("id"), true);
|
||||
var m = new Member(dr.GetInt("id"), true);
|
||||
m.PopulateMemberFromReader(dr);
|
||||
tmp.Add(m);
|
||||
}
|
||||
@@ -378,7 +377,7 @@ namespace umbraco.cms.businesslogic.member
|
||||
|
||||
public static Member GetMemberFromLoginAndEncodedPassword(string loginName, string password)
|
||||
{
|
||||
object o = SqlHelper.ExecuteScalar<object>(
|
||||
var o = SqlHelper.ExecuteScalar<object>(
|
||||
"select nodeID from cmsMember where LoginName = @loginName and Password = @password",
|
||||
SqlHelper.CreateParameter("loginName", loginName),
|
||||
SqlHelper.CreateParameter("password", password));
|
||||
@@ -411,16 +410,8 @@ namespace umbraco.cms.businesslogic.member
|
||||
/// <returns>True if the member exists</returns>
|
||||
public static bool IsMember(string loginName)
|
||||
{
|
||||
Debug.Assert(loginName != null, "loginName cannot be null");
|
||||
object o = SqlHelper.ExecuteScalar<object>(
|
||||
"select count(nodeID) as tmp from cmsMember where LoginName = @loginName",
|
||||
SqlHelper.CreateParameter("@loginName", loginName));
|
||||
if (o == null)
|
||||
return false;
|
||||
int count;
|
||||
if (!int.TryParse(o.ToString(), out count))
|
||||
return false;
|
||||
return count > 0;
|
||||
Mandate.ParameterNotNullOrEmpty(loginName, "loginName");
|
||||
return ApplicationContext.Current.Services.MemberService.GetByUsername(loginName) != null;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -434,12 +425,12 @@ namespace umbraco.cms.businesslogic.member
|
||||
public static void DeleteFromType(MemberType dt)
|
||||
{
|
||||
var objs = getContentOfContentType(dt);
|
||||
foreach (Content c in objs)
|
||||
foreach (var c in objs)
|
||||
{
|
||||
// due to recursive structure document might already been deleted..
|
||||
if (IsNode(c.UniqueId))
|
||||
{
|
||||
Member tmp = new Member(c.UniqueId);
|
||||
var tmp = new Member(c.UniqueId);
|
||||
tmp.delete();
|
||||
}
|
||||
}
|
||||
@@ -456,17 +447,17 @@ namespace umbraco.cms.businesslogic.member
|
||||
{
|
||||
get
|
||||
{
|
||||
if (string.IsNullOrEmpty(m_Text))
|
||||
if (string.IsNullOrEmpty(_text))
|
||||
{
|
||||
m_Text = SqlHelper.ExecuteScalar<string>(
|
||||
_text = SqlHelper.ExecuteScalar<string>(
|
||||
"select text from umbracoNode where id = @id",
|
||||
SqlHelper.CreateParameter("@id", Id));
|
||||
}
|
||||
return m_Text;
|
||||
return _text;
|
||||
}
|
||||
set
|
||||
{
|
||||
m_Text = value;
|
||||
_text = value;
|
||||
base.Text = value;
|
||||
}
|
||||
}
|
||||
@@ -478,13 +469,13 @@ namespace umbraco.cms.businesslogic.member
|
||||
{
|
||||
get
|
||||
{
|
||||
if (string.IsNullOrEmpty(m_Password))
|
||||
if (string.IsNullOrEmpty(_password))
|
||||
{
|
||||
m_Password = SqlHelper.ExecuteScalar<string>(
|
||||
_password = SqlHelper.ExecuteScalar<string>(
|
||||
"select Password from cmsMember where nodeId = @id",
|
||||
SqlHelper.CreateParameter("@id", Id));
|
||||
}
|
||||
return m_Password;
|
||||
return _password;
|
||||
|
||||
}
|
||||
set
|
||||
@@ -492,7 +483,7 @@ namespace umbraco.cms.businesslogic.member
|
||||
// We need to use the provider for this in order for hashing, etc. support
|
||||
// To write directly to the db use the ChangePassword method
|
||||
// this is not pretty but nessecary due to a design flaw (the membership provider should have been a part of the cms project)
|
||||
MemberShipHelper helper = new MemberShipHelper();
|
||||
var helper = new MemberShipHelper();
|
||||
ChangePassword(helper.EncodePassword(value, Membership.Provider.PasswordFormat));
|
||||
}
|
||||
}
|
||||
@@ -504,13 +495,13 @@ namespace umbraco.cms.businesslogic.member
|
||||
{
|
||||
get
|
||||
{
|
||||
if (string.IsNullOrEmpty(m_LoginName))
|
||||
if (string.IsNullOrEmpty(_loginName))
|
||||
{
|
||||
m_LoginName = SqlHelper.ExecuteScalar<string>(
|
||||
_loginName = SqlHelper.ExecuteScalar<string>(
|
||||
"select LoginName from cmsMember where nodeId = @id",
|
||||
SqlHelper.CreateParameter("@id", Id));
|
||||
}
|
||||
return m_LoginName;
|
||||
return _loginName;
|
||||
}
|
||||
set
|
||||
{
|
||||
@@ -522,7 +513,7 @@ namespace umbraco.cms.businesslogic.member
|
||||
"update cmsMember set LoginName = @loginName where nodeId = @id",
|
||||
SqlHelper.CreateParameter("@loginName", value),
|
||||
SqlHelper.CreateParameter("@id", Id));
|
||||
m_LoginName = value;
|
||||
_loginName = value;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -533,9 +524,9 @@ namespace umbraco.cms.businesslogic.member
|
||||
{
|
||||
get
|
||||
{
|
||||
if (m_Groups == null)
|
||||
if (_groups == null)
|
||||
PopulateGroups();
|
||||
return m_Groups;
|
||||
return _groups;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -546,14 +537,14 @@ namespace umbraco.cms.businesslogic.member
|
||||
{
|
||||
get
|
||||
{
|
||||
if (String.IsNullOrEmpty(m_Email))
|
||||
if (String.IsNullOrEmpty(_email))
|
||||
{
|
||||
m_Email = SqlHelper.ExecuteScalar<string>(
|
||||
_email = SqlHelper.ExecuteScalar<string>(
|
||||
"select Email from cmsMember where nodeId = @id",
|
||||
SqlHelper.CreateParameter("@id", Id));
|
||||
}
|
||||
|
||||
return string.IsNullOrWhiteSpace(m_Email) ? m_Email : m_Email.ToLower();
|
||||
return string.IsNullOrWhiteSpace(_email) ? _email : _email.ToLower();
|
||||
}
|
||||
set
|
||||
{
|
||||
@@ -578,7 +569,7 @@ namespace umbraco.cms.businesslogic.member
|
||||
"update cmsMember set Email = @email where nodeId = @id",
|
||||
SqlHelper.CreateParameter("@id", Id), SqlHelper.CreateParameter("@email", newEmail));
|
||||
// Set the backing field to new value
|
||||
m_Email = newEmail;
|
||||
_email = newEmail;
|
||||
}
|
||||
}
|
||||
#endregion
|
||||
@@ -589,16 +580,16 @@ namespace umbraco.cms.businesslogic.member
|
||||
{
|
||||
base.setupNode();
|
||||
|
||||
using (IRecordsReader dr = SqlHelper.ExecuteReader(
|
||||
using (var dr = SqlHelper.ExecuteReader(
|
||||
@"SELECT Email, LoginName, Password FROM cmsMember WHERE nodeId=@nodeId",
|
||||
SqlHelper.CreateParameter("@nodeId", this.Id)))
|
||||
{
|
||||
if (dr.Read())
|
||||
{
|
||||
if (!dr.IsNull("Email"))
|
||||
m_Email = dr.GetString("Email");
|
||||
m_LoginName = dr.GetString("LoginName");
|
||||
m_Password = dr.GetString("Password");
|
||||
_email = dr.GetString("Email");
|
||||
_loginName = dr.GetString("LoginName");
|
||||
_password = dr.GetString("Password");
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -612,7 +603,7 @@ namespace umbraco.cms.businesslogic.member
|
||||
/// </summary>
|
||||
public override void Save()
|
||||
{
|
||||
SaveEventArgs e = new SaveEventArgs();
|
||||
var e = new SaveEventArgs();
|
||||
FireBeforeSave(e);
|
||||
|
||||
if (!e.Cancel)
|
||||
@@ -679,7 +670,7 @@ namespace umbraco.cms.businesslogic.member
|
||||
}
|
||||
|
||||
// re-generate xml
|
||||
XmlDocument xd = new XmlDocument();
|
||||
var xd = new XmlDocument();
|
||||
XmlGenerate(xd);
|
||||
|
||||
// generate preview for blame history?
|
||||
@@ -701,7 +692,7 @@ namespace umbraco.cms.businesslogic.member
|
||||
/// <returns>A the xmlrepresentation of the current member</returns>
|
||||
public override XmlNode ToXml(XmlDocument xd, bool Deep)
|
||||
{
|
||||
XmlNode x = base.ToXml(xd, Deep);
|
||||
var x = base.ToXml(xd, Deep);
|
||||
if (x.Attributes["loginName"] == null)
|
||||
{
|
||||
x.Attributes.Append(xmlHelper.addAttribute(xd, "loginName", LoginName));
|
||||
@@ -715,7 +706,7 @@ namespace umbraco.cms.businesslogic.member
|
||||
/// </summary>
|
||||
public override void delete()
|
||||
{
|
||||
DeleteEventArgs e = new DeleteEventArgs();
|
||||
var e = new DeleteEventArgs();
|
||||
FireBeforeDelete(e);
|
||||
|
||||
if (!e.Cancel)
|
||||
@@ -745,7 +736,22 @@ namespace umbraco.cms.businesslogic.member
|
||||
SqlHelper.CreateParameter("@id", Id));
|
||||
|
||||
//update this object's password
|
||||
m_Password = newPassword;
|
||||
_password = newPassword;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Returns the currently stored password - this may be encrypted or hashed string depending on the active membership provider
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
public string GetPassword()
|
||||
{
|
||||
if (string.IsNullOrEmpty(_password))
|
||||
{
|
||||
_password = SqlHelper.ExecuteScalar<string>(
|
||||
"select Password from cmsMember where nodeId = @id",
|
||||
SqlHelper.CreateParameter("@id", Id));
|
||||
}
|
||||
return _password;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -755,13 +761,13 @@ namespace umbraco.cms.businesslogic.member
|
||||
[MethodImpl(MethodImplOptions.Synchronized)]
|
||||
public void AddGroup(int GroupId)
|
||||
{
|
||||
AddGroupEventArgs e = new AddGroupEventArgs();
|
||||
var e = new AddGroupEventArgs();
|
||||
e.GroupId = GroupId;
|
||||
FireBeforeAddGroup(e);
|
||||
|
||||
if (!e.Cancel)
|
||||
{
|
||||
IParameter[] parameters = new IParameter[] { SqlHelper.CreateParameter("@id", Id),
|
||||
var parameters = new IParameter[] { SqlHelper.CreateParameter("@id", Id),
|
||||
SqlHelper.CreateParameter("@groupId", GroupId) };
|
||||
bool exists = SqlHelper.ExecuteScalar<int>("SELECT COUNT(member) FROM cmsMember2MemberGroup WHERE member = @id AND memberGroup = @groupId",
|
||||
parameters) > 0;
|
||||
@@ -780,7 +786,7 @@ namespace umbraco.cms.businesslogic.member
|
||||
/// <param name="GroupId">The MemberGroup from which the Member is removed</param>
|
||||
public void RemoveGroup(int GroupId)
|
||||
{
|
||||
RemoveGroupEventArgs e = new RemoveGroupEventArgs();
|
||||
var e = new RemoveGroupEventArgs();
|
||||
e.GroupId = GroupId;
|
||||
FireBeforeRemoveGroup(e);
|
||||
|
||||
@@ -817,9 +823,9 @@ namespace umbraco.cms.businesslogic.member
|
||||
dr.GetDateTime("createDate"), false);
|
||||
|
||||
if (!dr.IsNull("Email"))
|
||||
m_Email = dr.GetString("Email");
|
||||
m_LoginName = dr.GetString("LoginName");
|
||||
m_Password = dr.GetString("Password");
|
||||
_email = dr.GetString("Email");
|
||||
_loginName = dr.GetString("LoginName");
|
||||
_password = dr.GetString("Password");
|
||||
|
||||
}
|
||||
|
||||
@@ -838,7 +844,7 @@ namespace umbraco.cms.businesslogic.member
|
||||
temp.Add(dr.GetInt("memberGroup"),
|
||||
new MemberGroup(dr.GetInt("memberGroup")));
|
||||
}
|
||||
m_Groups = temp;
|
||||
_groups = temp;
|
||||
}
|
||||
|
||||
private static string GetCacheKey(int id)
|
||||
@@ -846,55 +852,6 @@ namespace umbraco.cms.businesslogic.member
|
||||
return string.Format("{0}{1}", CacheKeys.MemberBusinessLogicCacheKey, id);
|
||||
}
|
||||
|
||||
// zb-00035 #29931 : helper class to handle member state
|
||||
class MemberState
|
||||
{
|
||||
public int MemberId { get; set; }
|
||||
public Guid MemberGuid { get; set; }
|
||||
public string MemberLogin { get; set; }
|
||||
|
||||
public MemberState(int memberId, Guid memberGuid, string memberLogin)
|
||||
{
|
||||
MemberId = memberId;
|
||||
MemberGuid = memberGuid;
|
||||
MemberLogin = memberLogin;
|
||||
}
|
||||
}
|
||||
|
||||
// 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);
|
||||
// zb-00004 #29956 : refactor cookies names & handling
|
||||
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);
|
||||
|
||||
// zb-00004 #29956 : refactor cookies names & handling
|
||||
if (useSession)
|
||||
HttpContext.Current.Session[StateHelper.Cookies.Member.Key] = value;
|
||||
else
|
||||
StateHelper.Cookies.Member.SetValue(value, cookieDays);
|
||||
}
|
||||
|
||||
[Obsolete("Only use .NET Membership APIs to handle state now", true)]
|
||||
static void ClearMemberState()
|
||||
{
|
||||
@@ -903,87 +860,6 @@ 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
|
||||
// umbraco user instead of the new one
|
||||
// zb-00004 #29956 : refactor cookies names & handling + bring session-related stuff here
|
||||
string value = null;
|
||||
if (StateHelper.Cookies.Member.HasValue)
|
||||
{
|
||||
value = StateHelper.Cookies.Member.GetValue();
|
||||
if (!String.IsNullOrEmpty(value))
|
||||
{
|
||||
string validateMemberId = value.Substring(0, value.IndexOf("+"));
|
||||
if (Membership.GetUser() == null || validateMemberId != Membership.GetUser().ProviderUserKey.ToString())
|
||||
{
|
||||
Member.RemoveMemberFromCache(int.Parse(validateMemberId));
|
||||
value = String.Empty;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// compatibility with .NET Memberships
|
||||
if (String.IsNullOrEmpty(value) && HttpContext.Current.User.Identity.IsAuthenticated)
|
||||
{
|
||||
int _currentMemberId = 0;
|
||||
if (int.TryParse(Membership.GetUser().ProviderUserKey.ToString(), out _currentMemberId))
|
||||
{
|
||||
if (memberExists(_currentMemberId))
|
||||
{
|
||||
// current member is always in the cache, else add it!
|
||||
Member m = GetMemberFromCache(_currentMemberId);
|
||||
if (m == null)
|
||||
{
|
||||
m = new Member(_currentMemberId);
|
||||
AddMemberToCache(m);
|
||||
}
|
||||
return new MemberState(m.Id, m.UniqueId, m.LoginName);
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
var context = HttpContext.Current;
|
||||
if (context != null && context.Session != null && context.Session[StateHelper.Cookies.Member.Key] != null)
|
||||
{
|
||||
string v = context.Session[StateHelper.Cookies.Member.Key].ToString();
|
||||
if (v != "0")
|
||||
value = v;
|
||||
}
|
||||
}
|
||||
|
||||
if (value == null)
|
||||
return null;
|
||||
|
||||
// #30350 - do not use Split as memberLogin could contain '+'
|
||||
int pos1 = value.IndexOf('+');
|
||||
if (pos1 < 0)
|
||||
return null;
|
||||
int pos2 = value.IndexOf('+', pos1 + 1);
|
||||
if (pos2 < 0)
|
||||
return null;
|
||||
|
||||
int memberId;
|
||||
if (!Int32.TryParse(value.Substring(0, pos1), out memberId))
|
||||
return null;
|
||||
Guid memberGuid;
|
||||
try
|
||||
{
|
||||
// Guid.TryParse is in .NET 4 only
|
||||
// using try...catch for .NET 3.5 compatibility
|
||||
memberGuid = new Guid(value.Substring(pos1 + 1, pos2 - pos1 - 1));
|
||||
}
|
||||
catch
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
MemberState ms = new MemberState(memberId, memberGuid, value.Substring(pos2 + 1));
|
||||
return ms;
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region MemberHandle functions
|
||||
@@ -1003,7 +879,7 @@ namespace umbraco.cms.businesslogic.member
|
||||
|
||||
if (m != null)
|
||||
{
|
||||
AddToCacheEventArgs e = new AddToCacheEventArgs();
|
||||
var e = new AddToCacheEventArgs();
|
||||
m.FireBeforeAddToCache(e);
|
||||
|
||||
if (!e.Cancel)
|
||||
@@ -1221,11 +1097,11 @@ namespace umbraco.cms.businesslogic.member
|
||||
/// <summary>
|
||||
/// Make a lookup in the database to verify if a member truely exists
|
||||
/// </summary>
|
||||
/// <param name="NodeId">The node id of the member</param>
|
||||
/// <param name="nodeId">The node id of the member</param>
|
||||
/// <returns>True is a record exists in db</returns>
|
||||
private static bool memberExists(int NodeId)
|
||||
private static bool MemberExists(int nodeId)
|
||||
{
|
||||
return SqlHelper.ExecuteScalar<int>("select count(nodeId) from cmsMember where nodeId = @nodeId", SqlHelper.CreateParameter("@nodeId", NodeId)) == 1;
|
||||
return ApplicationContext.Current.Services.MemberService.Exists(nodeId);
|
||||
}
|
||||
|
||||
|
||||
@@ -1235,32 +1111,15 @@ namespace umbraco.cms.businesslogic.member
|
||||
/// <returns>The current visitors members id, if the visitor is not logged in it returns 0</returns>
|
||||
public static int CurrentMemberId()
|
||||
{
|
||||
int _currentMemberId = 0;
|
||||
int currentMemberId = 0;
|
||||
|
||||
// For backwards compatibility between umbraco members and .net membership
|
||||
if (HttpContext.Current.User.Identity.IsAuthenticated)
|
||||
{
|
||||
int.TryParse(Membership.GetUser().ProviderUserKey.ToString(), out _currentMemberId);
|
||||
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
|
||||
MemberState ms = GetMemberState();
|
||||
if (ms != null)
|
||||
_currentMemberId = ms.MemberId;
|
||||
}
|
||||
|
||||
if (_currentMemberId > 0 && !memberExists(_currentMemberId))
|
||||
{
|
||||
_currentMemberId = 0;
|
||||
// zb-00035 #29931 : cleanup member state management
|
||||
ClearMemberState();
|
||||
}
|
||||
*/
|
||||
return _currentMemberId;
|
||||
return currentMemberId;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -1273,28 +1132,17 @@ namespace umbraco.cms.businesslogic.member
|
||||
{
|
||||
if (HttpContext.Current.User.Identity.IsAuthenticated)
|
||||
{
|
||||
// zb-00035 #29931 : cleanup member state management
|
||||
/*MemberState ms = GetMemberState();
|
||||
|
||||
if (ms == null || ms.MemberId == 0)
|
||||
return null;
|
||||
|
||||
// return member from cache
|
||||
Member member = GetMemberFromCache(ms.MemberId);
|
||||
if (member == null)
|
||||
member = new Member(ms.MemberId);
|
||||
*/
|
||||
|
||||
int _currentMemberId = 0;
|
||||
if (int.TryParse(Membership.GetUser().ProviderUserKey.ToString(), out _currentMemberId))
|
||||
int currentMemberId = 0;
|
||||
if (int.TryParse(Membership.GetUser().ProviderUserKey.ToString(), out currentMemberId))
|
||||
{
|
||||
Member m = new Member(_currentMemberId);
|
||||
var m = new Member(currentMemberId);
|
||||
return m;
|
||||
}
|
||||
}
|
||||
}
|
||||
catch
|
||||
catch (Exception ex)
|
||||
{
|
||||
LogHelper.Error<Member>("An error occurred in GetCurrentMember", ex);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user