diff --git a/src/Umbraco.Web.UI.Client/src/common/resources/users.resource.js b/src/Umbraco.Web.UI.Client/src/common/resources/users.resource.js
index 90da2b9010..242afd9525 100644
--- a/src/Umbraco.Web.UI.Client/src/common/resources/users.resource.js
+++ b/src/Umbraco.Web.UI.Client/src/common/resources/users.resource.js
@@ -164,42 +164,16 @@
"Failed to save user");
}
- function getUserGroup() {
- var deferred = $q.defer();
- var user = {
- "name": "Admin",
- "alias": "admin",
- "id": 1,
- "icon": "icon-medal",
- "users": [
- {
- "id": 1,
- "name": "Angela Stone",
- "avatar": "https://s3.amazonaws.com/uifaces/faces/twitter/jina/128.jpg",
- "state": "active"
- },
- {
- "id": 2,
- "name": "Beverly Silva",
- "avatar": "",
- "state": "disabled"
- },
- {
- "id": 3,
- "name": "Ruth Turner",
- "avatar": "",
- "state": "pending"
- },
- {
- "id": 4,
- "name": "Arthur Welch",
- "avatar": "https://s3.amazonaws.com/uifaces/faces/twitter/ashleyford/128.jpg",
- "state": "active"
- }
- ]
- };
- deferred.resolve(user);
- return deferred.promise;
+ function getUserGroup(id) {
+
+ return umbRequestHelper.resourcePromise(
+ $http.get(
+ umbRequestHelper.getApiUrl(
+ "userApiBaseUrl",
+ "GetUserGroup",
+ { id: id })),
+ "Failed to retrieve data for user group " + id);
+
}
function getUserGroups() {
diff --git a/src/Umbraco.Web.UI.Client/src/views/users/group.controller.js b/src/Umbraco.Web.UI.Client/src/views/users/group.controller.js
index ee88ac8839..731518e2b4 100644
--- a/src/Umbraco.Web.UI.Client/src/views/users/group.controller.js
+++ b/src/Umbraco.Web.UI.Client/src/views/users/group.controller.js
@@ -1,7 +1,7 @@
(function () {
"use strict";
- function UserGroupEditController($scope, $timeout, $location, usersResource) {
+ function UserGroupEditController($scope, $timeout, $location, usersResource, $routeParams) {
var vm = this;
@@ -22,7 +22,7 @@
vm.loading = true;
// get user
- usersResource.getUserGroup().then(function (userGroup) {
+ usersResource.getUserGroup($routeParams.id).then(function (userGroup) {
vm.userGroup = userGroup;
makeBreadcrumbs();
});
diff --git a/src/Umbraco.Web/Editors/UsersController.cs b/src/Umbraco.Web/Editors/UsersController.cs
index 98f476d7c3..dac443c330 100644
--- a/src/Umbraco.Web/Editors/UsersController.cs
+++ b/src/Umbraco.Web/Editors/UsersController.cs
@@ -164,9 +164,22 @@ namespace Umbraco.Web.Editors
/// Returns all user groups
///
///
- public IEnumerable GetUserGroups()
+ public IEnumerable GetUserGroups()
{
- return Mapper.Map, IEnumerable>(Services.UserService.GetAllUserGroups());
+ return Mapper.Map, IEnumerable>(Services.UserService.GetAllUserGroups());
+ }
+
+ ///
+ /// Returns all user groups
+ ///
+ ///
+ public UserGroupDisplay GetUserGroup(int id)
+ {
+ var found = Services.UserService.GetUserGroupById(id);
+ if (found == null)
+ throw new HttpResponseException(Request.CreateResponse(HttpStatusCode.NotFound));
+
+ return Mapper.Map(found);
}
///
diff --git a/src/Umbraco.Web/Models/ContentEditing/ContentItemBasic.cs b/src/Umbraco.Web/Models/ContentEditing/ContentItemBasic.cs
index 74c6a3ea7e..f4f6b5a2e0 100644
--- a/src/Umbraco.Web/Models/ContentEditing/ContentItemBasic.cs
+++ b/src/Umbraco.Web/Models/ContentEditing/ContentItemBasic.cs
@@ -29,10 +29,10 @@ namespace Umbraco.Web.Models.ContentEditing
public bool HasPublishedVersion { get; set; }
[DataMember(Name = "owner")]
- public UserBasic Owner { get; set; }
+ public UserProfile Owner { get; set; }
[DataMember(Name = "updater")]
- public UserBasic Updater { get; set; }
+ public UserProfile Updater { get; set; }
[DataMember(Name = "contentTypeAlias", IsRequired = true)]
[Required(AllowEmptyStrings = false)]
diff --git a/src/Umbraco.Web/Models/ContentEditing/UserBasic.cs b/src/Umbraco.Web/Models/ContentEditing/UserBasic.cs
index 07e800d647..60f00a85e7 100644
--- a/src/Umbraco.Web/Models/ContentEditing/UserBasic.cs
+++ b/src/Umbraco.Web/Models/ContentEditing/UserBasic.cs
@@ -1,28 +1,51 @@
using System;
-using System.ComponentModel.DataAnnotations;
+using System.Collections.Generic;
+using System.ComponentModel;
using System.Runtime.Serialization;
using Umbraco.Core.Models.Membership;
namespace Umbraco.Web.Models.ContentEditing
{
- ///
- /// A bare minimum structure that represents a user, usually attached to other objects
- ///
[DataContract(Name = "user", Namespace = "")]
- public class UserBasic : IComparable
+ [ReadOnly(true)]
+ public class UserBasic : EntityBasic, INotificationModel
{
- [DataMember(Name = "id", IsRequired = true)]
- [Required]
- public int UserId { get; set; }
-
- [DataMember(Name = "name", IsRequired = true)]
- [Required]
- public string Name { get; set; }
-
-
- int IComparable.CompareTo(object obj)
+ public UserBasic()
{
- return String.Compare(Name, ((UserBasic)obj).Name, StringComparison.Ordinal);
- }
+ Notifications = new List();
+ }
+
+ [DataMember(Name = "username")]
+ public string Username { get; set; }
+
+ ///
+ /// The MD5 lowercase hash of the email which can be used by gravatar
+ ///
+ [DataMember(Name = "emailHash")]
+ public string EmailHash { get; set; }
+
+ [DataMember(Name = "lastLoginDate")]
+ public DateTime? LastLoginDate { get; set; }
+
+ ///
+ /// Returns a list of different size avatars
+ ///
+ [DataMember(Name = "avatars")]
+ public string[] Avatars { get; set; }
+
+ [DataMember(Name = "userState")]
+ public UserState UserState { get; set; }
+
+ [DataMember(Name = "culture", IsRequired = true)]
+ public string Culture { get; set; }
+
+ [DataMember(Name = "email", IsRequired = true)]
+ public string Email { get; set; }
+
+ ///
+ /// This is used to add custom localized messages/strings to the response for the app to use for localized UI purposes.
+ ///
+ [DataMember(Name = "notifications")]
+ public List Notifications { get; private set; }
}
}
\ No newline at end of file
diff --git a/src/Umbraco.Web/Models/ContentEditing/UserDetail.cs b/src/Umbraco.Web/Models/ContentEditing/UserDetail.cs
index 6f70222d98..a8846ff182 100644
--- a/src/Umbraco.Web/Models/ContentEditing/UserDetail.cs
+++ b/src/Umbraco.Web/Models/ContentEditing/UserDetail.cs
@@ -8,7 +8,7 @@ namespace Umbraco.Web.Models.ContentEditing
/// Represents information for the current user
///
[DataContract(Name = "user", Namespace = "")]
- public class UserDetail : UserBasic
+ public class UserDetail : UserProfile
{
[DataMember(Name = "email", IsRequired = true)]
[Required]
diff --git a/src/Umbraco.Web/Models/ContentEditing/UserDisplay.cs b/src/Umbraco.Web/Models/ContentEditing/UserDisplay.cs
index 3b39369b61..1c3b19ab90 100644
--- a/src/Umbraco.Web/Models/ContentEditing/UserDisplay.cs
+++ b/src/Umbraco.Web/Models/ContentEditing/UserDisplay.cs
@@ -1,9 +1,7 @@
-using System;
-using System.Collections.Generic;
+using System.Collections.Generic;
using System.ComponentModel;
using System.Globalization;
using System.Runtime.Serialization;
-using Umbraco.Core.Models.Membership;
namespace Umbraco.Web.Models.ContentEditing
{
@@ -12,45 +10,17 @@ namespace Umbraco.Web.Models.ContentEditing
///
[DataContract(Name = "user", Namespace = "")]
[ReadOnly(true)]
- public class UserDisplay : EntityBasic, INotificationModel
+ public class UserDisplay : UserBasic
{
- public UserDisplay()
+ public UserDisplay() : base()
{
- Notifications = new List();
}
- [DataMember(Name = "username")]
- public string Username { get; set; }
-
- ///
- /// The MD5 lowercase hash of the email which can be used by gravatar
- ///
- [DataMember(Name = "emailHash")]
- public string EmailHash { get; set; }
-
- [DataMember(Name = "lastLoginDate")]
- public DateTime? LastLoginDate { get; set; }
-
- ///
- /// Returns a list of different size avatars
- ///
- [DataMember(Name = "avatars")]
- public string[] Avatars { get; set; }
-
- [DataMember(Name = "userState")]
- public UserState UserState { get; set; }
-
- [DataMember(Name = "culture", IsRequired = true)]
- public string Culture { get; set; }
-
- [DataMember(Name = "email", IsRequired = true)]
- public string Email { get; set; }
-
///
/// The list of group aliases assigned to the user
///
[DataMember(Name = "userGroups")]
- public IEnumerable UserGroups { get; set; }
+ public IEnumerable UserGroups { get; set; }
///
/// Gets the available cultures (i.e. to populate a drop down)
@@ -70,11 +40,5 @@ namespace Umbraco.Web.Models.ContentEditing
/////
//[DataMember(Name = "allowedSections")]
//public IEnumerable AllowedSections { get; set; }
-
- ///
- /// This is used to add custom localized messages/strings to the response for the app to use for localized UI purposes.
- ///
- [DataMember(Name = "notifications")]
- public List Notifications { get; private set; }
}
}
\ No newline at end of file
diff --git a/src/Umbraco.Web/Models/ContentEditing/UserGroupBasic.cs b/src/Umbraco.Web/Models/ContentEditing/UserGroupBasic.cs
new file mode 100644
index 0000000000..3d6b304bef
--- /dev/null
+++ b/src/Umbraco.Web/Models/ContentEditing/UserGroupBasic.cs
@@ -0,0 +1,29 @@
+using System.Collections.Generic;
+using System.Runtime.Serialization;
+
+namespace Umbraco.Web.Models.ContentEditing
+{
+ [DataContract(Name = "userGroup", Namespace = "")]
+ public class UserGroupBasic : EntityBasic, INotificationModel
+ {
+ public UserGroupBasic()
+ {
+ Notifications = new List();
+ }
+
+ ///
+ /// This is used to add custom localized messages/strings to the response for the app to use for localized UI purposes.
+ ///
+ [DataMember(Name = "notifications")]
+ public List Notifications { get; private set; }
+
+ [DataMember(Name = "sections")]
+ public IEnumerable Sections { get; set; }
+
+ [DataMember(Name = "startContentId")]
+ public EntityBasic StartContentId { get; set; }
+
+ [DataMember(Name = "startMediaId")]
+ public EntityBasic StartMediaId { get; set; }
+ }
+}
\ No newline at end of file
diff --git a/src/Umbraco.Web/Models/ContentEditing/UserGroupDisplay.cs b/src/Umbraco.Web/Models/ContentEditing/UserGroupDisplay.cs
index d3510ef781..fdeab12e05 100644
--- a/src/Umbraco.Web/Models/ContentEditing/UserGroupDisplay.cs
+++ b/src/Umbraco.Web/Models/ContentEditing/UserGroupDisplay.cs
@@ -1,29 +1,12 @@
-using System.Collections.Generic;
+using System.Collections.Generic;
using System.Runtime.Serialization;
namespace Umbraco.Web.Models.ContentEditing
{
[DataContract(Name = "userGroup", Namespace = "")]
- public class UserGroupDisplay : EntityBasic, INotificationModel
+ public class UserGroupDisplay : UserGroupBasic
{
- public UserGroupDisplay()
- {
- Notifications = new List();
- }
-
- ///
- /// This is used to add custom localized messages/strings to the response for the app to use for localized UI purposes.
- ///
- [DataMember(Name = "notifications")]
- public List Notifications { get; private set; }
-
- [DataMember(Name = "sections")]
- public IEnumerable Sections { get; set; }
-
- [DataMember(Name = "startContentId")]
- public EntityBasic StartContentId { get; set; }
-
- [DataMember(Name = "startMediaId")]
- public EntityBasic StartMediaId { get; set; }
+ [DataMember(Name = "users")]
+ public IEnumerable Users { get; set; }
}
}
\ No newline at end of file
diff --git a/src/Umbraco.Web/Models/ContentEditing/UserProfile.cs b/src/Umbraco.Web/Models/ContentEditing/UserProfile.cs
new file mode 100644
index 0000000000..eca28e1408
--- /dev/null
+++ b/src/Umbraco.Web/Models/ContentEditing/UserProfile.cs
@@ -0,0 +1,28 @@
+using System;
+using System.ComponentModel.DataAnnotations;
+using System.Runtime.Serialization;
+using Umbraco.Core.Models.Membership;
+
+namespace Umbraco.Web.Models.ContentEditing
+{
+ ///
+ /// A bare minimum structure that represents a user, usually attached to other objects
+ ///
+ [DataContract(Name = "user", Namespace = "")]
+ public class UserProfile : IComparable
+ {
+ [DataMember(Name = "id", IsRequired = true)]
+ [Required]
+ public int UserId { get; set; }
+
+ [DataMember(Name = "name", IsRequired = true)]
+ [Required]
+ public string Name { get; set; }
+
+
+ int IComparable.CompareTo(object obj)
+ {
+ return String.Compare(Name, ((UserProfile)obj).Name, StringComparison.Ordinal);
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/Umbraco.Web/Models/Mapping/CreatorResolver.cs b/src/Umbraco.Web/Models/Mapping/CreatorResolver.cs
index 0f67a974f6..28e9799861 100644
--- a/src/Umbraco.Web/Models/Mapping/CreatorResolver.cs
+++ b/src/Umbraco.Web/Models/Mapping/CreatorResolver.cs
@@ -2,17 +2,18 @@
using Umbraco.Core.Models;
using Umbraco.Core.Models.Membership;
using Umbraco.Web.Models.ContentEditing;
+using UserProfile = Umbraco.Web.Models.ContentEditing.UserProfile;
namespace Umbraco.Web.Models.Mapping
{
///
/// Maps the Creator for content
///
- internal class CreatorResolver : ValueResolver
+ internal class CreatorResolver : ValueResolver
{
- protected override UserBasic ResolveCore(IContent source)
+ protected override UserProfile ResolveCore(IContent source)
{
- return Mapper.Map(source.GetWriterProfile());
+ return Mapper.Map(source.GetWriterProfile());
}
}
}
\ No newline at end of file
diff --git a/src/Umbraco.Web/Models/Mapping/MemberModelMapper.cs b/src/Umbraco.Web/Models/Mapping/MemberModelMapper.cs
index 976026bd97..e3c82cf782 100644
--- a/src/Umbraco.Web/Models/Mapping/MemberModelMapper.cs
+++ b/src/Umbraco.Web/Models/Mapping/MemberModelMapper.cs
@@ -15,6 +15,7 @@ using System.Linq;
using Umbraco.Core.PropertyEditors;
using Umbraco.Core.Security;
using Umbraco.Web.Trees;
+using UserProfile = Umbraco.Web.Models.ContentEditing.UserProfile;
namespace Umbraco.Web.Models.Mapping
{
@@ -106,7 +107,7 @@ namespace Umbraco.Web.Models.Mapping
.ForMember(member => member.CreateDate, expression => expression.MapFrom(user => user.CreationDate))
.ForMember(member => member.UpdateDate, expression => expression.MapFrom(user => user.LastActivityDate))
.ForMember(member => member.Key, expression => expression.MapFrom(user => user.ProviderUserKey.TryConvertTo().Result.ToString("N")))
- .ForMember(member => member.Owner, expression => expression.UseValue(new UserBasic {Name = "Admin", UserId = 0}))
+ .ForMember(member => member.Owner, expression => expression.UseValue(new UserProfile {Name = "Admin", UserId = 0}))
.ForMember(member => member.Icon, expression => expression.UseValue("icon-user"))
.ForMember(member => member.Name, expression => expression.MapFrom(user => user.UserName))
.ForMember(member => member.Email, expression => expression.MapFrom(content => content.Email))
diff --git a/src/Umbraco.Web/Models/Mapping/OwnerResolver.cs b/src/Umbraco.Web/Models/Mapping/OwnerResolver.cs
index 067d495591..8992451e9e 100644
--- a/src/Umbraco.Web/Models/Mapping/OwnerResolver.cs
+++ b/src/Umbraco.Web/Models/Mapping/OwnerResolver.cs
@@ -3,6 +3,7 @@ using Umbraco.Core.Models;
using Umbraco.Core.Models.EntityBase;
using Umbraco.Core.Models.Membership;
using Umbraco.Web.Models.ContentEditing;
+using UserProfile = Umbraco.Web.Models.ContentEditing.UserProfile;
namespace Umbraco.Web.Models.Mapping
{
@@ -10,12 +11,12 @@ namespace Umbraco.Web.Models.Mapping
/// Maps the Owner for IContentBase
///
///
- internal class OwnerResolver : ValueResolver
+ internal class OwnerResolver : ValueResolver
where TPersisted : IContentBase
{
- protected override UserBasic ResolveCore(TPersisted source)
+ protected override UserProfile ResolveCore(TPersisted source)
{
- return Mapper.Map(source.GetCreatorProfile());
+ return Mapper.Map(source.GetCreatorProfile());
}
}
}
\ No newline at end of file
diff --git a/src/Umbraco.Web/Models/Mapping/UserModelMapper.cs b/src/Umbraco.Web/Models/Mapping/UserModelMapper.cs
index 2fa1c3026f..415ce28a27 100644
--- a/src/Umbraco.Web/Models/Mapping/UserModelMapper.cs
+++ b/src/Umbraco.Web/Models/Mapping/UserModelMapper.cs
@@ -12,13 +12,15 @@ using Umbraco.Core.Models;
using Umbraco.Core.Models.EntityBase;
using Umbraco.Core.Models.Identity;
using Umbraco.Core.Security;
+using Umbraco.Core.Services;
+using UserProfile = Umbraco.Web.Models.ContentEditing.UserProfile;
namespace Umbraco.Web.Models.Mapping
{
internal class UserModelMapper : MapperConfiguration
{
public override void ConfigureMappings(IConfiguration config, ApplicationContext applicationContext)
- {
+ {
//Used for merging existing UserSave to an existing IUser instance - this will not create an IUser instance!
config.CreateMap()
.ForMember(user => user.Language, expression => expression.MapFrom(save => save.Culture))
@@ -40,14 +42,14 @@ namespace Umbraco.Web.Models.Mapping
.ForMember(user => user.CreateDate, expression => expression.Ignore())
.ForMember(user => user.UpdateDate, expression => expression.Ignore())
.AfterMap((save, user) =>
- {
+ {
user.ClearGroups();
var foundGroups = applicationContext.Services.UserService.GetUserGroupsByAlias(save.UserGroups.ToArray());
foreach (var group in foundGroups)
{
user.AddGroup(group.ToReadOnlyGroup());
}
- });
+ });
config.CreateMap()
.ConstructUsing(invite => new User(invite.Name, invite.Email, invite.Email, Guid.NewGuid().ToString("N")))
@@ -86,7 +88,7 @@ namespace Umbraco.Web.Models.Mapping
}
});
- config.CreateMap()
+ config.CreateMap()
.ForMember(detail => detail.StartContentId, opt => opt.Ignore())
.ForMember(detail => detail.StartMediaId, opt => opt.Ignore())
.ForMember(detail => detail.Key, opt => opt.Ignore())
@@ -99,18 +101,10 @@ namespace Umbraco.Web.Models.Mapping
.ForMember(detail => detail.AdditionalData, opt => opt.Ignore())
.AfterMap((group, display) =>
{
- var allSections = applicationContext.Services.SectionService.GetSections();
- display.Sections = allSections.Where(x => group.Alias == x.Alias).Select(Mapper.Map);
+ MapUserGroupBasic(applicationContext.Services, group, display);
+ });
- //applicationContext.Services.EntityService.Get(x.StartContentId, false))
- //applicationContext.Services.EntityService.Get(x.StartMediaId, false))
- if (display.Icon.IsNullOrWhiteSpace())
- {
- display.Icon = "icon-users";
- }
- });
-
- config.CreateMap()
+ config.CreateMap()
.ForMember(detail => detail.StartContentId, opt => opt.Ignore())
.ForMember(detail => detail.StartMediaId, opt => opt.Ignore())
.ForMember(detail => detail.Sections, opt => opt.Ignore())
@@ -122,12 +116,25 @@ namespace Umbraco.Web.Models.Mapping
.ForMember(detail => detail.AdditionalData, opt => opt.Ignore())
.AfterMap((group, display) =>
{
- var allSections = applicationContext.Services.SectionService.GetSections();
- display.Sections = allSections.Where(x => group.Alias == x.Alias).Select(Mapper.Map);
-
- //applicationContext.Services.EntityService.Get(x.StartContentId, false))
- //applicationContext.Services.EntityService.Get(x.StartMediaId, false))
+ MapUserGroupBasic(applicationContext.Services, group, display);
+ });
+ config.CreateMap()
+ .ForMember(detail => detail.StartContentId, opt => opt.Ignore())
+ .ForMember(detail => detail.StartMediaId, opt => opt.Ignore())
+ .ForMember(detail => detail.Sections, opt => opt.Ignore())
+ .ForMember(detail => detail.Notifications, opt => opt.Ignore())
+ .ForMember(detail => detail.Udi, opt => opt.Ignore())
+ .ForMember(detail => detail.Trashed, opt => opt.Ignore())
+ .ForMember(detail => detail.ParentId, opt => opt.UseValue(-1))
+ .ForMember(detail => detail.Path, opt => opt.MapFrom(userGroup => "-1," + userGroup.Id))
+ .ForMember(detail => detail.AdditionalData, opt => opt.Ignore())
+ .ForMember(detail => detail.Users, opt => opt.Ignore())
+ .AfterMap((group, display) =>
+ {
+ MapUserGroupBasic(applicationContext.Services, group, display);
+ var users = applicationContext.Services.UserService.GetAllInGroup(group.Id);
+ display.Users = Mapper.Map>(users);
});
config.CreateMap()
@@ -165,11 +172,29 @@ namespace Umbraco.Web.Models.Mapping
if (startMediaIds.Length > 0)
{
var mediaItems = applicationContext.Services.EntityService.GetAll(UmbracoObjectTypes.Document, startMediaIds);
- display.StartMediaIds = Mapper.Map, IEnumerable>(mediaItems);
+ display.StartMediaIds = Mapper.Map, IEnumerable>(mediaItems);
}
- display.UserGroups = Mapper.Map, IEnumerable>(user.Groups);
+ display.UserGroups = Mapper.Map, IEnumerable>(user.Groups);
- });
+ });
+
+ config.CreateMap()
+ .ForMember(detail => detail.Avatars, opt => opt.MapFrom(user => user.GetCurrentUserAvatarUrls(applicationContext.Services.UserService, applicationContext.ApplicationCache.RuntimeCache)))
+ .ForMember(detail => detail.Username, opt => opt.MapFrom(user => user.Username))
+ .ForMember(detail => detail.LastLoginDate, opt => opt.MapFrom(user => user.LastLoginDate == default(DateTime) ? null : (DateTime?) user.LastLoginDate))
+ .ForMember(detail => detail.Culture, opt => opt.MapFrom(user => user.GetUserCulture(applicationContext.Services.TextService)))
+ .ForMember(
+ detail => detail.EmailHash,
+ opt => opt.MapFrom(user => user.Email.ToLowerInvariant().Trim().ToMd5()))
+ .ForMember(detail => detail.ParentId, opt => opt.UseValue(-1))
+ .ForMember(detail => detail.Path, opt => opt.MapFrom(user => "-1," + user.Id))
+ .ForMember(detail => detail.Notifications, opt => opt.Ignore())
+ .ForMember(detail => detail.Udi, opt => opt.Ignore())
+ .ForMember(detail => detail.Icon, opt => opt.Ignore())
+ .ForMember(detail => detail.Trashed, opt => opt.Ignore())
+ .ForMember(detail => detail.Alias, opt => opt.Ignore())
+ .ForMember(detail => detail.Trashed, opt => opt.Ignore())
+ .ForMember(detail => detail.AdditionalData, opt => opt.Ignore());
config.CreateMap()
.ForMember(detail => detail.Avatars, opt => opt.MapFrom(user => user.GetCurrentUserAvatarUrls(applicationContext.Services.UserService, applicationContext.ApplicationCache.RuntimeCache)))
@@ -182,7 +207,7 @@ namespace Umbraco.Web.Models.Mapping
opt => opt.MapFrom(user => user.Email.ToLowerInvariant().Trim().ToMd5()))
.ForMember(detail => detail.SecondsUntilTimeout, opt => opt.Ignore());
- config.CreateMap()
+ config.CreateMap()
.ForMember(detail => detail.UserId, opt => opt.MapFrom(profile => GetIntId(profile.Id)));
config.CreateMap()
@@ -197,8 +222,28 @@ namespace Umbraco.Web.Models.Mapping
.ForMember(detail => detail.Culture, opt => opt.MapFrom(user => user.GetUserCulture(applicationContext.Services.TextService)))
.ForMember(detail => detail.SessionId, opt => opt.MapFrom(user => user.SecurityStamp.IsNullOrWhiteSpace() ? Guid.NewGuid().ToString("N") : user.SecurityStamp));
- }
-
+ }
+
+ private void MapUserGroupBasic(ServiceContext services, dynamic group, UserGroupBasic display)
+ {
+ var allSections = services.SectionService.GetSections();
+ display.Sections = allSections.Where(x => group.Alias == x.Alias).Select(Mapper.Map);
+ if (group.StartMediaId > 0)
+ {
+ display.StartMediaId = Mapper.Map(
+ services.EntityService.Get(group.StartMediaId, false));
+ }
+ if (group.StartContentId > 0)
+ {
+ display.StartContentId = Mapper.Map(
+ services.EntityService.Get(group.StartContentId, false));
+ }
+ if (display.Icon.IsNullOrWhiteSpace())
+ {
+ display.Icon = "icon-users";
+ }
+ }
+
private static int GetIntId(object id)
{
var result = id.TryConvertTo();
diff --git a/src/Umbraco.Web/Umbraco.Web.csproj b/src/Umbraco.Web/Umbraco.Web.csproj
index 1b657523d7..4ba6564409 100644
--- a/src/Umbraco.Web/Umbraco.Web.csproj
+++ b/src/Umbraco.Web/Umbraco.Web.csproj
@@ -388,6 +388,8 @@
+
+
@@ -836,7 +838,7 @@
-
+