diff --git a/src/umbraco.cms/businesslogic/member/Member.cs b/src/umbraco.cms/businesslogic/member/Member.cs index cf1f912bb1..4ea679acae 100644 --- a/src/umbraco.cms/businesslogic/member/Member.cs +++ b/src/umbraco.cms/businesslogic/member/Member.cs @@ -9,6 +9,7 @@ using System.Xml; using Umbraco.Core; using Umbraco.Core.Cache; using Umbraco.Core.Logging; +using Umbraco.Core.Models; using Umbraco.Core.Models.Rdbms; using umbraco.cms.businesslogic.cache; using umbraco.BusinessLogic; @@ -57,6 +58,7 @@ namespace umbraco.cms.businesslogic.member private string _password; private string _loginName; private Hashtable _groups = null; + protected internal IMember Content; #endregion #region Constructors @@ -212,16 +214,16 @@ namespace umbraco.cms.businesslogic.member { if (mbt == null) throw new ArgumentNullException("mbt"); - var loginName = (!String.IsNullOrEmpty(LoginName)) ? LoginName : Name; + var loginName = (!string.IsNullOrEmpty(LoginName)) ? LoginName : Name; - if (String.IsNullOrEmpty(loginName)) + if (string.IsNullOrEmpty(loginName)) throw new ArgumentException("The loginname must be different from an empty string", "loginName"); // Test for e-mail 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)); + throw new Exception(string.Format("Duplicate Email! A member with the e-mail {0} already exists", Email)); else if (GetMemberFromLoginName(loginName) != null) - throw new Exception(String.Format("Duplicate User name! A member with the user name {0} already exists", loginName)); + 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(); @@ -265,7 +267,7 @@ namespace umbraco.cms.businesslogic.member /// The member with the specified loginname - null if no Member with the login exists public static Member GetMemberFromLoginName(string loginName) { - if (String.IsNullOrEmpty(loginName)) + if (string.IsNullOrEmpty(loginName)) throw new ArgumentException("The username of a Member must be different from an emptry string", "loginName"); if (IsMember(loginName)) { @@ -363,14 +365,13 @@ namespace umbraco.cms.businesslogic.member } else { - HttpContext.Current.Trace.Warn("Incorrect login/password"); + LogHelper.Debug("Incorrect login/password attempt or member is locked out or not approved (" + loginName + ")", true); return null; } } else { - HttpContext.Current.Trace.Warn("No member with loginname: " + loginName + " Exists"); - // throw new ArgumentException("No member with Loginname: " + LoginName + " exists"); + LogHelper.Debug("No member with loginname: " + loginName + " Exists", true); return null; } } @@ -505,7 +506,7 @@ namespace umbraco.cms.businesslogic.member } set { - if (String.IsNullOrEmpty(value)) + if (string.IsNullOrEmpty(value)) throw new ArgumentException("The loginname must be different from an empty string", "LoginName"); if (value.Contains(",")) throw new ArgumentException("The parameter 'LoginName' must not contain commas."); @@ -537,7 +538,7 @@ namespace umbraco.cms.businesslogic.member { get { - if (String.IsNullOrEmpty(_email)) + if (string.IsNullOrEmpty(_email)) { _email = SqlHelper.ExecuteScalar( "select Email from cmsMember where nodeId = @id", @@ -563,7 +564,7 @@ namespace umbraco.cms.businesslogic.member { // If the value hasn't changed and there are more than 1 member with that email, then throw // If the value has changed and there are any member with that new email, then throw - throw new Exception(String.Format("Duplicate Email! A member with the e-mail {0} already exists", newEmail)); + throw new Exception(string.Format("Duplicate Email! A member with the e-mail {0} already exists", newEmail)); } SqlHelper.ExecuteNonQuery( "update cmsMember set Email = @email where nodeId = @id", @@ -576,28 +577,43 @@ namespace umbraco.cms.businesslogic.member #region Public Methods + [Obsolete("Obsolete", false)] protected override void setupNode() { - base.setupNode(); - - using (var dr = SqlHelper.ExecuteReader( - @"SELECT Email, LoginName, Password FROM cmsMember WHERE nodeId=@nodeId", - SqlHelper.CreateParameter("@nodeId", this.Id))) + if (Id == -1) { - if (dr.Read()) - { - if (!dr.IsNull("Email")) - _email = dr.GetString("Email"); - _loginName = dr.GetString("LoginName"); - _password = dr.GetString("Password"); - } - else - { - throw new ArgumentException(string.Format("No Member exists with Id '{0}'", this.Id)); - } + base.setupNode(); + return; } + + var content = ApplicationContext.Current.Services.MemberService.GetById(Id); + + if (content == null) + throw new ArgumentException(string.Format("No Member exists with id '{0}'", Id)); + + SetupNode(content); } + private void SetupNode(IMember content) + { + Content = content; + //Also need to set the ContentBase item to this one so all the propery values load from it + ContentBase = Content; + + //Setting private properties from IContentBase replacing CMSNode.setupNode() / CMSNode.PopulateCMSNodeFromReader() + base.PopulateCMSNodeFromUmbracoEntity(Content, _objectType); + + //If the version is empty we update with the latest version from the current IContent. + if (Version == Guid.Empty) + Version = Content.Version; + + _email = Content.Email; + _loginName = Content.Username; + _password = Content.Password; + + } + + /// /// Used to persist object changes to the database. In Version3.0 it's just a stub for future compatibility ///