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)