From 7848a3095d2df87975382832f341a60baeeeb0cb Mon Sep 17 00:00:00 2001 From: Shannon Date: Wed, 16 Jul 2014 14:12:04 +1000 Subject: [PATCH] Fixes: U4-5207 User Type with a space in the name breaks User Content --- .../Models/Membership/UserType.cs | 57 ++++++++++++++++--- 1 file changed, 48 insertions(+), 9 deletions(-) diff --git a/src/Umbraco.Core/Models/Membership/UserType.cs b/src/Umbraco.Core/Models/Membership/UserType.cs index b5553c10d2..915943be43 100644 --- a/src/Umbraco.Core/Models/Membership/UserType.cs +++ b/src/Umbraco.Core/Models/Membership/UserType.cs @@ -1,27 +1,55 @@ using System; using System.Collections.Generic; +using System.Reflection; using System.Runtime.Serialization; using Umbraco.Core.Models.EntityBase; using Umbraco.Core.Persistence.Mappers; +using Umbraco.Core.Strings; namespace Umbraco.Core.Models.Membership { /// /// Represents the Type for a Backoffice User - /// - /// - /// Should be internal until a proper user/membership implementation - /// is part of the roadmap. - /// + /// [Serializable] [DataContract(IsReference = true)] internal class UserType : Entity, IUserType { - [DataMember] - public string Alias { get; set; } + private string _alias; + private string _name; + private IEnumerable _permissions; + + private static readonly PropertyInfo NameSelector = ExpressionHelper.GetPropertyInfo(x => x.Name); + private static readonly PropertyInfo AliasSelector = ExpressionHelper.GetPropertyInfo(x => x.Alias); + private static readonly PropertyInfo PermissionsSelector = ExpressionHelper.GetPropertyInfo>(x => x.Permissions); [DataMember] - public string Name { get; set; } + public string Alias + { + get { return _alias; } + set + { + SetPropertyValueAndDetectChanges(o => + { + _alias = value.ToCleanString(CleanStringType.Alias | CleanStringType.UmbracoCase); + return _alias; + }, _alias, AliasSelector); + } + } + + [DataMember] + public string Name + { + get { return _name; } + set + { + SetPropertyValueAndDetectChanges(o => + { + _name = value; + return _name; + }, _name, NameSelector); + } + } /// /// The set of default permissions for the user type @@ -30,6 +58,17 @@ namespace Umbraco.Core.Models.Membership /// By default each permission is simply a single char but we've made this an enumerable{string} to support a more flexible permissions structure in the future. /// [DataMember] - public IEnumerable Permissions { get; set; } + public IEnumerable Permissions + { + get { return _permissions; } + set + { + SetPropertyValueAndDetectChanges(o => + { + _permissions = value; + return _permissions; + }, _permissions, PermissionsSelector); + } + } } } \ No newline at end of file