using System.Collections.Generic;
using System.Linq;
using AutoMapper;
using Umbraco.Core.Models;
using Umbraco.Web.Models.ContentEditing;
namespace Umbraco.Web.Models.Mapping
{
///
/// A resolver to map properties to a collection of
///
internal class MemberBasicPropertiesResolver : IValueResolver>
{
public IEnumerable Resolve(IMember source, MemberBasic destination, IEnumerable destMember, ResolutionContext context)
{
var umbracoContext = context.GetUmbracoContext();
var result = Mapper.Map, IEnumerable>(
// Sort properties so items from different compositions appear in correct order (see U4-9298). Map sorted properties.
source.Properties.OrderBy(prop => prop.PropertyType.SortOrder))
.ToList();
var memberType = source.ContentType;
//now update the IsSensitive value
foreach (var prop in result)
{
//check if this property is flagged as sensitive
var isSensitiveProperty = memberType.IsSensitiveProperty(prop.Alias);
//check permissions for viewing sensitive data
if (isSensitiveProperty && umbracoContext.Security.CurrentUser.HasAccessToSensitiveData() == false)
{
//mark this property as sensitive
prop.IsSensitive = true;
//clear the value
prop.Value = null;
}
}
return result;
}
}
}