From f06c9e823545d8e86309bb751e63b99a2a3b1a18 Mon Sep 17 00:00:00 2001 From: Shannon Date: Tue, 18 Feb 2014 15:39:00 +1100 Subject: [PATCH] Ensures the default member type properties are put on a custom tab --- src/Umbraco.Core/Constants-Conventions.cs | 5 + src/Umbraco.Core/Models/Member.cs | 94 ++++++++++++++++++- .../Repositories/MemberTypeRepository.cs | 3 +- .../Repositories/MemberRepositoryTest.cs | 9 +- 4 files changed, 108 insertions(+), 3 deletions(-) diff --git a/src/Umbraco.Core/Constants-Conventions.cs b/src/Umbraco.Core/Constants-Conventions.cs index 7ecac29782..7425cdf640 100644 --- a/src/Umbraco.Core/Constants-Conventions.cs +++ b/src/Umbraco.Core/Constants-Conventions.cs @@ -166,6 +166,11 @@ namespace Umbraco.Core public const string FailedPasswordAttemptsLabel = "Failed Password Attempts"; + /// + /// Group name to put the membership properties on + /// + internal const string StandardPropertiesGroupName = "Membership"; + internal static Dictionary GetStandardPropertyTypeStubs() { return new Dictionary diff --git a/src/Umbraco.Core/Models/Member.cs b/src/Umbraco.Core/Models/Member.cs index 48683071d6..f06a94c326 100644 --- a/src/Umbraco.Core/Models/Member.cs +++ b/src/Umbraco.Core/Models/Member.cs @@ -141,12 +141,22 @@ namespace Umbraco.Core.Models { get { + if (Properties.Contains(Constants.Conventions.Member.PasswordQuestion) == false) + { + return default(string); + } + return Properties[Constants.Conventions.Member.PasswordQuestion].Value == null ? string.Empty : Properties[Constants.Conventions.Member.PasswordQuestion].Value.ToString(); } set { + if (Properties.Contains(Constants.Conventions.Member.PasswordQuestion) == false) + { + return; + } + Properties[Constants.Conventions.Member.PasswordQuestion].Value = value; } } @@ -163,12 +173,22 @@ namespace Umbraco.Core.Models { get { + if (Properties.Contains(Constants.Conventions.Member.PasswordAnswer) == false) + { + return default(string); + } + return Properties[Constants.Conventions.Member.PasswordAnswer].Value == null ? string.Empty : Properties[Constants.Conventions.Member.PasswordAnswer].Value.ToString(); } set { + if (Properties.Contains(Constants.Conventions.Member.PasswordAnswer) == false) + { + return; + } + Properties[Constants.Conventions.Member.PasswordAnswer].Value = value; } } @@ -185,12 +205,22 @@ namespace Umbraco.Core.Models { get { + if (Properties.Contains(Constants.Conventions.Member.Comments) == false) + { + return default(string); + } + return Properties[Constants.Conventions.Member.Comments].Value == null ? string.Empty : Properties[Constants.Conventions.Member.Comments].Value.ToString(); } set { + if (Properties.Contains(Constants.Conventions.Member.Comments) == false) + { + return; + } + Properties[Constants.Conventions.Member.Comments].Value = value; } } @@ -207,6 +237,12 @@ namespace Umbraco.Core.Models { get { + if (Properties.Contains(Constants.Conventions.Member.IsApproved) == false) + { + //I guess we'll leave them approved by default! + return true; + } + var tryConvert = Properties[Constants.Conventions.Member.IsApproved].Value.TryConvertTo(); if (tryConvert.Success) { @@ -216,6 +252,11 @@ namespace Umbraco.Core.Models } set { + if (Properties.Contains(Constants.Conventions.Member.IsApproved) == false) + { + return; + } + Properties[Constants.Conventions.Member.IsApproved].Value = value; } } @@ -232,6 +273,12 @@ namespace Umbraco.Core.Models { get { + if (Properties.Contains(Constants.Conventions.Member.IsLockedOut) == false) + { + //I guess we'll not lock them out by default! + return false; + } + var tryConvert = Properties[Constants.Conventions.Member.IsLockedOut].Value.TryConvertTo(); if (tryConvert.Success) { @@ -241,6 +288,11 @@ namespace Umbraco.Core.Models } set { + if (Properties.Contains(Constants.Conventions.Member.IsLockedOut) == false) + { + return; + } + Properties[Constants.Conventions.Member.IsLockedOut].Value = value; } } @@ -257,6 +309,11 @@ namespace Umbraco.Core.Models { get { + if (Properties.Contains(Constants.Conventions.Member.LastLoginDate) == false) + { + return default(DateTime); + } + var tryConvert = Properties[Constants.Conventions.Member.LastLoginDate].Value.TryConvertTo(); if (tryConvert.Success) { @@ -266,6 +323,11 @@ namespace Umbraco.Core.Models } set { + if (Properties.Contains(Constants.Conventions.Member.LastLoginDate) == false) + { + return; + } + Properties[Constants.Conventions.Member.LastLoginDate].Value = value; } } @@ -282,6 +344,11 @@ namespace Umbraco.Core.Models { get { + if (Properties.Contains(Constants.Conventions.Member.LastPasswordChangeDate) == false) + { + return default(DateTime); + } + var tryConvert = Properties[Constants.Conventions.Member.LastPasswordChangeDate].Value.TryConvertTo(); if (tryConvert.Success) { @@ -291,6 +358,11 @@ namespace Umbraco.Core.Models } set { + if (Properties.Contains(Constants.Conventions.Member.LastPasswordChangeDate) == false) + { + return; + } + Properties[Constants.Conventions.Member.LastPasswordChangeDate].Value = value; } } @@ -307,6 +379,11 @@ namespace Umbraco.Core.Models { get { + if (Properties.Contains(Constants.Conventions.Member.LastLockoutDate) == false) + { + return default(DateTime); + } + var tryConvert = Properties[Constants.Conventions.Member.LastLockoutDate].Value.TryConvertTo(); if (tryConvert.Success) { @@ -316,6 +393,11 @@ namespace Umbraco.Core.Models } set { + if (Properties.Contains(Constants.Conventions.Member.LastLockoutDate) == false) + { + return; + } + Properties[Constants.Conventions.Member.LastLockoutDate].Value = value; } } @@ -333,6 +415,11 @@ namespace Umbraco.Core.Models { get { + if (Properties.Contains(Constants.Conventions.Member.FailedPasswordAttempts) == false) + { + return 0; + } + var tryConvert = Properties[Constants.Conventions.Member.FailedPasswordAttempts].Value.TryConvertTo(); if (tryConvert.Success) { @@ -342,7 +429,12 @@ namespace Umbraco.Core.Models } set { - Properties[Constants.Conventions.Member.LastLockoutDate].Value = value; + if (Properties.Contains(Constants.Conventions.Member.FailedPasswordAttempts) == false) + { + return; + } + + Properties[Constants.Conventions.Member.FailedPasswordAttempts].Value = value; } } diff --git a/src/Umbraco.Core/Persistence/Repositories/MemberTypeRepository.cs b/src/Umbraco.Core/Persistence/Repositories/MemberTypeRepository.cs index 5b48bcb768..48e0178392 100644 --- a/src/Umbraco.Core/Persistence/Repositories/MemberTypeRepository.cs +++ b/src/Umbraco.Core/Persistence/Repositories/MemberTypeRepository.cs @@ -168,10 +168,11 @@ namespace Umbraco.Core.Persistence.Repositories ((MemberType)entity).AddingEntity(); //By Convention we add 9 stnd PropertyTypes to an Umbraco MemberType + entity.AddPropertyGroup(Constants.Conventions.Member.StandardPropertiesGroupName); var standardPropertyTypes = Constants.Conventions.Member.GetStandardPropertyTypeStubs(); foreach (var standardPropertyType in standardPropertyTypes) { - entity.AddPropertyType(standardPropertyType.Value); + entity.AddPropertyType(standardPropertyType.Value, Constants.Conventions.Member.StandardPropertiesGroupName); } var factory = new MemberTypeFactory(NodeObjectTypeId); diff --git a/src/Umbraco.Tests/Persistence/Repositories/MemberRepositoryTest.cs b/src/Umbraco.Tests/Persistence/Repositories/MemberRepositoryTest.cs index 3937dcb8c9..ecaaa4bab9 100644 --- a/src/Umbraco.Tests/Persistence/Repositories/MemberRepositoryTest.cs +++ b/src/Umbraco.Tests/Persistence/Repositories/MemberRepositoryTest.cs @@ -223,10 +223,17 @@ namespace Umbraco.Tests.Persistence.Repositories var sut = repository.Get(member.Id); - Assert.That(sut.ContentType.PropertyGroups.Count(), Is.EqualTo(1)); + Assert.That(sut.ContentType.PropertyGroups.Count(), Is.EqualTo(2)); Assert.That(sut.ContentType.PropertyTypes.Count(), Is.EqualTo(3 + Constants.Conventions.Member.GetStandardPropertyTypeStubs().Count)); Assert.That(sut.Properties.Count(), Is.EqualTo(3 + Constants.Conventions.Member.GetStandardPropertyTypeStubs().Count)); Assert.That(sut.Properties.Any(x => x.HasIdentity == false || x.Id == 0), Is.False); + var grp = sut.PropertyGroups.FirstOrDefault(x => x.Name == Constants.Conventions.Member.StandardPropertiesGroupName); + Assert.IsNotNull(grp); + var aliases = Constants.Conventions.Member.GetStandardPropertyTypeStubs().Select(x => x.Key).ToArray(); + foreach (var p in sut.PropertyTypes.Where(x => aliases.Contains(x.Alias))) + { + Assert.AreEqual(grp.Id, p.PropertyGroupId.Value); + } } }