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