From 0be8039c8fd619192caff9b7b010844838109155 Mon Sep 17 00:00:00 2001 From: Shannon Date: Thu, 23 Jan 2014 15:31:49 +1100 Subject: [PATCH] Changes how IProfile works which is now just exposed by the IUser instead of implemented, this cleans up the Id situation. --- src/Umbraco.Core/Models/Membership/IUser.cs | 13 ++--- src/Umbraco.Core/Models/Membership/User.cs | 53 ++++++++++++++------- src/Umbraco.Core/Services/UserService.cs | 4 +- 3 files changed, 45 insertions(+), 25 deletions(-) diff --git a/src/Umbraco.Core/Models/Membership/IUser.cs b/src/Umbraco.Core/Models/Membership/IUser.cs index ab9c02b1b2..4aee69705e 100644 --- a/src/Umbraco.Core/Models/Membership/IUser.cs +++ b/src/Umbraco.Core/Models/Membership/IUser.cs @@ -7,18 +7,14 @@ namespace Umbraco.Core.Models.Membership /// Defines the interface for a /// /// Will be left internal until a proper Membership implementation is part of the roadmap - public interface IUser : IMembershipUser, IProfile + public interface IUser : IMembershipUser { - new int Id { get; set; } - + string Name { get; set; } int SessionTimeout { get; set; } int StartContentId { get; set; } int StartMediaId { get; set; } string Language { get; set; } - //NOTE: I have removed this because it is obsolete in v7 and we are basically removing live editing for now - //bool DefaultToLiveEditing { get; set; } - IUserType UserType { get; } /// @@ -32,5 +28,10 @@ namespace Umbraco.Core.Models.Membership IEnumerable AllowedSections { get; } void RemoveAllowedSection(string sectionAlias); void AddAllowedSection(string sectionAlias); + + /// + /// Exposes the basic profile data + /// + IProfile ProfileData { get; } } } \ No newline at end of file diff --git a/src/Umbraco.Core/Models/Membership/User.cs b/src/Umbraco.Core/Models/Membership/User.cs index b35fd04bba..6d2f104013 100644 --- a/src/Umbraco.Core/Models/Membership/User.cs +++ b/src/Umbraco.Core/Models/Membership/User.cs @@ -58,7 +58,6 @@ namespace Umbraco.Core.Models.Membership private string _username; private string _email; private string _password; - private Guid _key; private bool _isApproved; private bool _isLockedOut; private string _language; @@ -239,14 +238,8 @@ namespace Umbraco.Core.Models.Membership public int FailedPasswordAttempts { get; set; } #endregion - - #region Implementation of IProfile - - object IProfile.Id - { - get { return Id; } - set { Id = (int)value; } - } + + #region Implementation of IUser [DataMember] public string Name @@ -255,17 +248,13 @@ namespace Umbraco.Core.Models.Membership set { SetPropertyValueAndDetectChanges(o => - { - _name = value; - return _name; - }, _name, NameSelector); + { + _name = value; + return _name; + }, _name, NameSelector); } } - #endregion - - #region Implementation of IUser - public IEnumerable AllowedSections { get { return _sectionCollection; } @@ -284,6 +273,11 @@ namespace Umbraco.Core.Models.Membership } } + public IProfile ProfileData + { + get { return new UserProfile(this); } + } + /// /// Used internally to check if we need to add a section in the repository to the db /// @@ -465,5 +459,30 @@ namespace Umbraco.Core.Models.Membership _removedSections.Add(e.OldItems.Cast().First()); } } + + /// + /// Internal class used to wrap the user in a profile + /// + private class UserProfile : IProfile + { + private readonly IUser _user; + + public UserProfile(IUser user) + { + _user = user; + } + + public object Id + { + get { return _user.Id; } + set { _user.Id = (int)value; } + } + + public string Name + { + get { return _user.Name; } + set { _user.Name = value; } + } + } } } \ No newline at end of file diff --git a/src/Umbraco.Core/Services/UserService.cs b/src/Umbraco.Core/Services/UserService.cs index 589ed43046..fd43b496b1 100644 --- a/src/Umbraco.Core/Services/UserService.cs +++ b/src/Umbraco.Core/Services/UserService.cs @@ -343,13 +343,13 @@ namespace Umbraco.Core.Services public IProfile GetProfileById(int id) { var user = GetUserById(id); - return user; + return user.ProfileData; } public IProfile GetProfileByUserName(string login) { var user = GetByUsername(login); - return user; + return user.ProfileData; } public IUser GetUserById(int id)