Merge remote-tracking branch 'origin/6.2.0' into 7.1.0

Conflicts:
	src/Umbraco.Core/Constants-Conventions.cs
	src/Umbraco.Core/DateTimeExtensions.cs
	src/Umbraco.Core/Models/PropertyType.cs
	src/Umbraco.Core/Persistence/Factories/MemberTypeReadOnlyFactory.cs
	src/Umbraco.Core/Persistence/Factories/PropertyGroupFactory.cs
	src/Umbraco.Core/Persistence/Repositories/ContentTypeBaseRepository.cs
	src/Umbraco.Core/Persistence/Repositories/Interfaces/IUserRepository.cs
	src/Umbraco.Core/Persistence/Repositories/MemberTypeRepository.cs
	src/Umbraco.Core/Persistence/Repositories/PermissionRepository.cs
	src/Umbraco.Tests/App.config
	src/Umbraco.Tests/Persistence/Repositories/MemberTypeRepositoryTest.cs
	src/Umbraco.Tests/UmbracoExamine/ExamineBaseTest.cs
	src/Umbraco.Tests/packages.config
	src/Umbraco.Web.UI/packages.config
	src/Umbraco.Web/Umbraco.Web.csproj
	src/Umbraco.Web/app.config
	src/Umbraco.Web/umbraco.presentation/umbraco/developer/Xslt/xsltInsertValueOf.aspx.cs
	src/Umbraco.Web/umbraco.presentation/umbraco/dialogs/umbracoField.aspx.cs
	src/Umbraco.Web/umbraco.presentation/umbraco/members/EditMember.aspx.cs
	src/umbraco.MacroEngines/App.Config
	src/umbraco.providers/members/UmbracoMembershipProvider.cs
This commit is contained in:
Shannon
2014-02-21 16:32:53 +11:00
63 changed files with 559 additions and 298 deletions
@@ -183,6 +183,7 @@ namespace Umbraco.Core
{
Comments,
new PropertyType(PropertyEditors.TextboxMultipleAlias, DataTypeDatabaseType.Ntext)
new PropertyType(new Guid(PropertyEditors.TextboxMultiple), DataTypeDatabaseType.Ntext, true)
{
Alias = Comments,
Name = CommentsLabel
@@ -191,6 +192,7 @@ namespace Umbraco.Core
{
FailedPasswordAttempts,
new PropertyType(PropertyEditors.NoEditAlias, DataTypeDatabaseType.Integer)
new PropertyType(new Guid(PropertyEditors.NoEdit), DataTypeDatabaseType.Integer, true)
{
Alias = FailedPasswordAttempts,
Name = FailedPasswordAttemptsLabel
@@ -199,6 +201,7 @@ namespace Umbraco.Core
{
IsApproved,
new PropertyType(PropertyEditors.TrueFalseAlias, DataTypeDatabaseType.Integer)
new PropertyType(new Guid(PropertyEditors.TrueFalse), DataTypeDatabaseType.Integer, true)
{
Alias = IsApproved,
Name = IsApprovedLabel
@@ -207,6 +210,7 @@ namespace Umbraco.Core
{
IsLockedOut,
new PropertyType(PropertyEditors.TrueFalseAlias, DataTypeDatabaseType.Integer)
new PropertyType(new Guid(PropertyEditors.TrueFalse), DataTypeDatabaseType.Integer, true)
{
Alias = IsLockedOut,
Name = IsLockedOutLabel
@@ -215,6 +219,7 @@ namespace Umbraco.Core
{
LastLockoutDate,
new PropertyType(PropertyEditors.NoEditAlias, DataTypeDatabaseType.Date)
new PropertyType(new Guid(PropertyEditors.NoEdit), DataTypeDatabaseType.Date, true)
{
Alias = LastLockoutDate,
Name = LastLockoutDateLabel
@@ -223,6 +228,7 @@ namespace Umbraco.Core
{
LastLoginDate,
new PropertyType(PropertyEditors.NoEditAlias, DataTypeDatabaseType.Date)
new PropertyType(new Guid(PropertyEditors.NoEdit), DataTypeDatabaseType.Date, true)
{
Alias = LastLoginDate,
Name = LastLoginDateLabel
@@ -231,6 +237,7 @@ namespace Umbraco.Core
{
LastPasswordChangeDate,
new PropertyType(PropertyEditors.NoEditAlias, DataTypeDatabaseType.Date)
new PropertyType(new Guid(PropertyEditors.NoEdit), DataTypeDatabaseType.Date, true)
{
Alias = LastPasswordChangeDate,
Name = LastPasswordChangeDateLabel
@@ -239,6 +246,7 @@ namespace Umbraco.Core
{
PasswordAnswer,
new PropertyType(PropertyEditors.NoEditAlias, DataTypeDatabaseType.Nvarchar)
new PropertyType(new Guid(PropertyEditors.NoEdit), DataTypeDatabaseType.Nvarchar, true)
{
Alias = PasswordAnswer,
Name = PasswordAnswerLabel
@@ -247,6 +255,7 @@ namespace Umbraco.Core
{
PasswordQuestion,
new PropertyType(PropertyEditors.NoEditAlias, DataTypeDatabaseType.Nvarchar)
new PropertyType(new Guid(PropertyEditors.NoEdit), DataTypeDatabaseType.Nvarchar, true)
{
Alias = PasswordQuestion,
Name = PasswordQuestionLabel
+25
View File
@@ -18,5 +18,30 @@ namespace Umbraco.Core
return dt.ToString("yyyy-MM-dd HH:mm:ss");
}
public static DateTime TruncateTo(this DateTime dt, DateTruncate truncateTo)
{
if (truncateTo == DateTruncate.Year)
return new DateTime(dt.Year, 0, 0);
if (truncateTo == DateTruncate.Month)
return new DateTime(dt.Year, dt.Month, 0);
if (truncateTo == DateTruncate.Day)
return new DateTime(dt.Year, dt.Month, dt.Day);
if (truncateTo == DateTruncate.Hour)
return new DateTime(dt.Year, dt.Month, dt.Day, dt.Hour, 0, 0);
if (truncateTo == DateTruncate.Minute)
return new DateTime(dt.Year, dt.Month, dt.Day, dt.Hour, dt.Minute, 0);
return new DateTime(dt.Year, dt.Month, dt.Day, dt.Hour, dt.Minute, dt.Second);
}
public enum DateTruncate
{
Year,
Month,
Day,
Hour,
Minute,
Second
}
}
}
+8 -3
View File
@@ -44,7 +44,7 @@ namespace Umbraco.Core.Models
private static readonly PropertyInfo ValueSelector = ExpressionHelper.GetPropertyInfo<Property, object>(x => x.Value);
private static readonly PropertyInfo VersionSelector = ExpressionHelper.GetPropertyInfo<Property, Guid>(x => x.Version);
/// <summary>
/// Returns the instance of the tag support, by default tags are not enabled
/// </summary>
@@ -68,9 +68,14 @@ namespace Umbraco.Core.Models
/// <summary>
/// Returns the DatabaseType that the underlaying DataType is using to store its values
/// </summary>
/// <remarks>Only used internally when saving the property value</remarks>
/// <remarks>
/// Only used internally when saving the property value.
/// </remarks>
[IgnoreDataMember]
internal DataTypeDatabaseType DataTypeDatabaseType { get { return _propertyType.DataTypeDatabaseType; } }
internal DataTypeDatabaseType DataTypeDatabaseType
{
get { return _propertyType.DataTypeDatabaseType; }
}
/// <summary>
/// Returns the PropertyType, which this Property is based on
+21 -3
View File
@@ -15,6 +15,7 @@ namespace Umbraco.Core.Models
[DataContract(IsReference = true)]
public class PropertyType : Entity, IEquatable<PropertyType>
{
private readonly bool _isExplicitDbType;
private string _name;
private string _alias;
private string _description;
@@ -30,16 +31,30 @@ namespace Umbraco.Core.Models
public PropertyType(IDataTypeDefinition dataTypeDefinition)
{
if(dataTypeDefinition.HasIdentity)
DataTypeDefinitionId = dataTypeDefinition.Id;
_dataTypeDefinitionId = dataTypeDefinition.Id;
PropertyEditorAlias = dataTypeDefinition.PropertyEditorAlias;
DataTypeDatabaseType = dataTypeDefinition.DatabaseType;
_dataTypeId = dataTypeDefinition.ControlId;
_dataTypeDatabaseType = dataTypeDefinition.DatabaseType;
}
internal PropertyType(string propertyEditorAlias, DataTypeDatabaseType dataTypeDatabaseType)
: this(dataTypeControlId, dataTypeDatabaseType, false)
{
PropertyEditorAlias = propertyEditorAlias;
DataTypeDatabaseType = dataTypeDatabaseType;
}
/// <summary>
/// Used internally to assign an explicity database type for this property type regardless of what the underlying data type/property editor is.
/// </summary>
/// <param name="dataTypeControlId"></param>
/// <param name="dataTypeDatabaseType"></param>
/// <param name="isExplicitDbType"></param>
internal PropertyType(Guid dataTypeControlId, DataTypeDatabaseType dataTypeDatabaseType, bool isExplicitDbType)
{
_isExplicitDbType = isExplicitDbType;
_dataTypeId = dataTypeControlId;
_dataTypeDatabaseType = dataTypeDatabaseType;
}
private static readonly PropertyInfo NameSelector = ExpressionHelper.GetPropertyInfo<PropertyType, string>(x => x.Name);
@@ -165,6 +180,9 @@ namespace Umbraco.Core.Models
get { return _dataTypeDatabaseType; }
set
{
//don't allow setting this if an explicit declaration has been made in the ctor
if (_isExplicitDbType) return;
SetPropertyValueAndDetectChanges(o =>
{
_dataTypeDatabaseType = value;
@@ -11,6 +11,8 @@ namespace Umbraco.Core.Persistence.Factories
{
public IMemberType BuildEntity(MemberTypeReadOnlyDto dto)
{
var standardPropertyTypes = Constants.Conventions.Member.GetStandardPropertyTypeStubs();
var memberType = new MemberType(dto.ParentId)
{
Alias = dto.Alias,
@@ -32,13 +34,12 @@ namespace Umbraco.Core.Persistence.Factories
AllowedContentTypes = Enumerable.Empty<ContentTypeSort>()
};
var propertyTypeGroupCollection = GetPropertyTypeGroupCollection(dto, memberType);
var propertyTypeGroupCollection = GetPropertyTypeGroupCollection(dto, memberType, standardPropertyTypes);
memberType.PropertyGroups = propertyTypeGroupCollection;
var propertyTypes = GetPropertyTypes(dto, memberType);
var propertyTypes = GetPropertyTypes(dto, memberType, standardPropertyTypes);
//By Convention we add 9 stnd PropertyTypes - This is only here to support loading of types that didn't have these conventions before.
var standardPropertyTypes = Constants.Conventions.Member.GetStandardPropertyTypeStubs();
//By Convention we add 9 stnd PropertyTypes - This is only here to support loading of types that didn't have these conventions before.
foreach (var standardPropertyType in standardPropertyTypes)
{
if(dto.PropertyTypes.Any(x => x.Alias.Equals(standardPropertyType.Key))) continue;
@@ -55,10 +56,10 @@ namespace Umbraco.Core.Persistence.Factories
return memberType;
}
private PropertyGroupCollection GetPropertyTypeGroupCollection(MemberTypeReadOnlyDto dto, MemberType memberType)
private PropertyGroupCollection GetPropertyTypeGroupCollection(MemberTypeReadOnlyDto dto, MemberType memberType, Dictionary<string, PropertyType> standardProps)
{
var propertyGroups = new PropertyGroupCollection();
var standardProps = Constants.Conventions.Member.GetStandardPropertyTypeStubs();
var propertyGroups = new PropertyGroupCollection();
foreach (var groupDto in dto.PropertyTypeGroups.Where(x => x.Id.HasValue))
{
var group = new PropertyGroup();
@@ -92,13 +93,19 @@ namespace Umbraco.Core.Persistence.Factories
var tempGroupDto = groupDto;
var propertyType = new PropertyType(typeDto.PropertyEditorAlias,
//ensures that any built-in membership properties have their correct dbtype assigned no matter
//what the underlying data type is
MemberTypeRepository.GetDbTypeForBuiltInProperty(
typeDto.Alias,
typeDto.DbType.EnumParse<DataTypeDatabaseType>(true),
standardProps).Result)
//ensures that any built-in membership properties have their correct dbtype assigned no matter
//what the underlying data type is
var propDbType = MemberTypeRepository.GetDbTypeForBuiltInProperty(
typeDto.Alias,
typeDto.DbType.EnumParse<DataTypeDatabaseType>(true),
standardProps);
var propertyType = new PropertyType(
typeDto.ControlId,
propDbType.Result,
//This flag tells the property type that it has an explicit dbtype and that it cannot be changed
// which is what we want for the built-in properties.
propDbType.Success)
{
Alias = typeDto.Alias,
DataTypeDefinitionId = typeDto.DataTypeId,
@@ -127,34 +134,47 @@ namespace Umbraco.Core.Persistence.Factories
return propertyGroups;
}
private List<PropertyType> GetPropertyTypes(MemberTypeReadOnlyDto dto, MemberType memberType)
private List<PropertyType> GetPropertyTypes(MemberTypeReadOnlyDto dto, MemberType memberType, Dictionary<string, PropertyType> standardProps)
{
//Find PropertyTypes that does not belong to a PropertyTypeGroup
var propertyTypes = new List<PropertyType>();
foreach (var propertyType in dto.PropertyTypes.Where(x => (x.PropertyTypeGroupId.HasValue == false || x.PropertyTypeGroupId.Value == 0) && x.Id.HasValue))
foreach (var typeDto in dto.PropertyTypes.Where(x => (x.PropertyTypeGroupId.HasValue == false || x.PropertyTypeGroupId.Value == 0) && x.Id.HasValue))
{
//Internal dictionary for adding "MemberCanEdit" and "VisibleOnProfile" properties to each PropertyType
memberType.MemberTypePropertyTypes.Add(propertyType.Alias,
new MemberTypePropertyProfileAccess(propertyType.ViewOnProfile, propertyType.CanEdit));
//PropertyType Collection
propertyTypes.Add(new PropertyType(propertyType.PropertyEditorAlias,
propertyType.DbType.EnumParse<DataTypeDatabaseType>(true))
{
Alias = propertyType.Alias,
DataTypeDefinitionId = propertyType.DataTypeId,
Description = propertyType.Description,
HelpText = propertyType.HelpText,
Id = propertyType.Id.Value,
Mandatory = propertyType.Mandatory,
Name = propertyType.Name,
SortOrder = propertyType.SortOrder,
ValidationRegExp = propertyType.ValidationRegExp,
PropertyGroupId = new Lazy<int>(() => default(int)),
CreateDate = dto.CreateDate,
UpdateDate = dto.CreateDate
});
memberType.MemberTypePropertyTypes.Add(typeDto.Alias,
new MemberTypePropertyProfileAccess(typeDto.ViewOnProfile, typeDto.CanEdit));
//ensures that any built-in membership properties have their correct dbtype assigned no matter
//what the underlying data type is
var propDbType = MemberTypeRepository.GetDbTypeForBuiltInProperty(
typeDto.Alias,
typeDto.DbType.EnumParse<DataTypeDatabaseType>(true),
standardProps);
var propertyType = new PropertyType(
typeDto.ControlId,
propDbType.Result,
//This flag tells the property type that it has an explicit dbtype and that it cannot be changed
// which is what we want for the built-in properties.
propDbType.Success)
{
Alias = typeDto.Alias,
DataTypeDefinitionId = typeDto.DataTypeId,
Description = typeDto.Description,
HelpText = typeDto.HelpText,
Id = typeDto.Id.Value,
Mandatory = typeDto.Mandatory,
Name = typeDto.Name,
SortOrder = typeDto.SortOrder,
ValidationRegExp = typeDto.ValidationRegExp,
PropertyGroupId = new Lazy<int>(() => default(int)),
CreateDate = dto.CreateDate,
UpdateDate = dto.CreateDate
};
propertyTypes.Add(propertyType);
}
return propertyTypes;
}
@@ -11,17 +11,21 @@ namespace Umbraco.Core.Persistence.Factories
private readonly int _id;
private readonly DateTime _createDate;
private readonly DateTime _updateDate;
//a callback to create a property type which can be injected via a contructor
private readonly Func<Guid, DataTypeDatabaseType, string, PropertyType> _propertyTypeCtor;
public PropertyGroupFactory(int id)
{
_id = id;
_propertyTypeCtor = (guid, dbType, alias) => new PropertyType(guid, dbType);
}
public PropertyGroupFactory(int id, DateTime createDate, DateTime updateDate)
public PropertyGroupFactory(int id, DateTime createDate, DateTime updateDate, Func<Guid, DataTypeDatabaseType, string, PropertyType> propertyTypeCtor)
{
_id = id;
_createDate = createDate;
_updateDate = updateDate;
_propertyTypeCtor = propertyTypeCtor;
}
#region Implementation of IEntityFactory<IEnumerable<PropertyGroup>,IEnumerable<TabDto>>
@@ -55,22 +59,23 @@ namespace Umbraco.Core.Persistence.Factories
foreach (var typeDto in typeDtos)
{
var tempGroupDto = groupDto;
var propertyType = new PropertyType(typeDto.DataTypeDto.PropertyEditorAlias,
typeDto.DataTypeDto.DbType.EnumParse<DataTypeDatabaseType>(true))
{
Alias = typeDto.Alias,
DataTypeDefinitionId = typeDto.DataTypeId,
Description = typeDto.Description,
Id = typeDto.Id,
Name = typeDto.Name,
HelpText = typeDto.HelpText,
Mandatory = typeDto.Mandatory,
SortOrder = typeDto.SortOrder,
ValidationRegExp = typeDto.ValidationRegExp,
PropertyGroupId = new Lazy<int>(() => tempGroupDto.Id),
CreateDate = _createDate,
UpdateDate = _updateDate
};
var propertyType = _propertyTypeCtor(typeDto.DataTypeDto.ControlId,
typeDto.DataTypeDto.DbType.EnumParse<DataTypeDatabaseType>(true),
typeDto.Alias);
propertyType.Alias = typeDto.Alias;
propertyType.DataTypeDefinitionId = typeDto.DataTypeId;
propertyType.Description = typeDto.Description;
propertyType.Id = typeDto.Id;
propertyType.Name = typeDto.Name;
propertyType.HelpText = typeDto.HelpText;
propertyType.Mandatory = typeDto.Mandatory;
propertyType.SortOrder = typeDto.SortOrder;
propertyType.ValidationRegExp = typeDto.ValidationRegExp;
propertyType.PropertyGroupId = new Lazy<int>(() => tempGroupDto.Id);
propertyType.CreateDate = _createDate;
propertyType.UpdateDate = _updateDate;
//on initial construction we don't want to have dirty properties tracked
// http://issues.umbraco.org/issue/U4-1946
propertyType.ResetDirtyProperties(false);
@@ -288,7 +288,7 @@ namespace Umbraco.Core.Persistence.Repositories
from p in perm.AssignedPermissions
select new Tuple<int, string>(perm.UserId, p)).ToList();
permissionsRepo.AssignEntityPermissions(entity, userPermissions);
permissionsRepo.ReplaceEntityPermissions(entity, userPermissions);
//flag the entity's permissions changed flag so we can track those changes.
//Currently only used for the cache refreshers to detect if we should refresh all user permissions cache.
((Content) entity).PermissionsChanged = true;
@@ -559,15 +559,15 @@ namespace Umbraco.Core.Persistence.Repositories
}
/// <summary>
/// Assigns one permission to an entity for multiple users
/// Assigns a single permission to the current content item for the specified user ids
/// </summary>
/// <param name="entity"></param>
/// <param name="permission"></param>
/// <param name="userIds"></param>
public void AssignEntityPermissions(IContent entity, char permission, IEnumerable<int> userIds)
/// <param name="userIds"></param>
public void AssignEntityPermission(IContent entity, char permission, IEnumerable<int> userIds)
{
var repo = new PermissionRepository<IContent>(UnitOfWork, _cacheHelper);
repo.AssignEntityPermissions(entity, permission, userIds);
repo.AssignEntityPermission(entity, permission, userIds);
}
public IEnumerable<EntityPermission> GetPermissionsForEntity(int entityId)
@@ -56,6 +56,11 @@ namespace Umbraco.Core.Persistence.Repositories
}
}
protected virtual PropertyType CreatePropertyType(Guid dataTypeId, DataTypeDatabaseType dbType, string propertyTypeAlias)
{
return new PropertyType(dataTypeId, dbType);
}
protected void PersistNewBaseContentType(ContentTypeDto dto, IContentTypeComposition entity)
{
//Logic for setting Path, Level and SortOrder
@@ -344,7 +349,7 @@ namespace Umbraco.Core.Persistence.Repositories
var dtos = Database.Fetch<PropertyTypeGroupDto, PropertyTypeDto, DataTypeDto, PropertyTypeGroupDto>(new GroupPropertyTypeRelator().Map, sql);
var propertyGroupFactory = new PropertyGroupFactory(id, createDate, updateDate);
var propertyGroupFactory = new PropertyGroupFactory(id, createDate, updateDate, CreatePropertyType);
var propertyGroups = propertyGroupFactory.BuildEntity(dtos);
return new PropertyGroupCollection(propertyGroups);
}
@@ -361,25 +366,23 @@ namespace Umbraco.Core.Persistence.Repositories
var dtos = Database.Fetch<PropertyTypeDto, DataTypeDto>(sql);
//TODO Move this to a PropertyTypeFactory
var list = (from dto in dtos
where (dto.PropertyTypeGroupId > 0) == false
select
new PropertyType(dto.DataTypeDto.PropertyEditorAlias,
dto.DataTypeDto.DbType.EnumParse<DataTypeDatabaseType>(true))
{
Alias = dto.Alias,
DataTypeDefinitionId = dto.DataTypeId,
Description = dto.Description,
Id = dto.Id,
Name = dto.Name,
HelpText = dto.HelpText,
Mandatory = dto.Mandatory,
SortOrder = dto.SortOrder,
ValidationRegExp = dto.ValidationRegExp,
CreateDate = createDate,
UpdateDate = updateDate
}).ToList();
var list = new List<PropertyType>();
foreach (var dto in dtos.Where(x => (x.PropertyTypeGroupId > 0) == false))
{
var propType = CreatePropertyType(dto.DataTypeDto.ControlId, dto.DataTypeDto.DbType.EnumParse<DataTypeDatabaseType>(true), dto.Alias);
propType.Alias = dto.Alias;
propType.DataTypeDefinitionId = dto.DataTypeId;
propType.Description = dto.Description;
propType.Id = dto.Id;
propType.Name = dto.Name;
propType.HelpText = dto.HelpText;
propType.Mandatory = dto.Mandatory;
propType.SortOrder = dto.SortOrder;
propType.ValidationRegExp = dto.ValidationRegExp;
propType.CreateDate = createDate;
propType.UpdateDate = updateDate;
list.Add(propType);
}
//Reset dirty properties
Parallel.ForEach(list, currentFile => currentFile.ResetDirtyProperties(false));
@@ -29,7 +29,7 @@ namespace Umbraco.Core.Persistence.Repositories
/// <param name="entity"></param>
/// <param name="permission"></param>
/// <param name="userIds"></param>
void AssignEntityPermissions(IContent entity, char permission, IEnumerable<int> userIds);
void AssignEntityPermission(IContent entity, char permission, IEnumerable<int> userIds);
/// <summary>
/// Gets the list of permissions for the content item
@@ -38,7 +38,7 @@ namespace Umbraco.Core.Persistence.Repositories
/// <param name="orderBy"></param>
/// <returns></returns>
IEnumerable<IUser> GetPagedResultsByQuery(IQuery<IUser> query, int pageIndex, int pageSize, out int totalRecords, Expression<Func<IUser, string>> orderBy);
/// <summary>
/// Gets the user permissions for the specified entities
@@ -49,11 +49,11 @@ namespace Umbraco.Core.Persistence.Repositories
IEnumerable<EntityPermission> GetUserPermissionsForEntities(int userId, params int[] entityIds);
/// <summary>
/// Assigns the same permission set for a single user to any number of entities
/// Replaces the same permission set for a single user to any number of entities
/// </summary>
/// <param name="userId"></param>
/// <param name="permissions"></param>
/// <param name="entityIds"></param>
void AssignUserPermissions(int userId, IEnumerable<char> permissions, params int[] entityIds);
void ReplaceUserPermissions(int userId, IEnumerable<char> permissions, params int[] entityIds);
}
}
@@ -18,17 +18,17 @@ namespace Umbraco.Core.Persistence.Repositories
/// </summary>
internal class MemberTypeRepository : ContentTypeBaseRepository<int, IMemberType>, IMemberTypeRepository
{
public MemberTypeRepository(IDatabaseUnitOfWork work)
public MemberTypeRepository(IDatabaseUnitOfWork work)
: base(work)
{
}
public MemberTypeRepository(IDatabaseUnitOfWork work, IRepositoryCacheProvider cache)
public MemberTypeRepository(IDatabaseUnitOfWork work, IRepositoryCacheProvider cache)
: base(work, cache)
{
}
#region Overrides of RepositoryBase<int, IMemberType>
#region Overrides of RepositoryBase<int, IMemberType>
protected override IMemberType PerformGet(int id)
{
@@ -40,13 +40,13 @@ namespace Umbraco.Core.Persistence.Repositories
Database.Fetch<MemberTypeReadOnlyDto, PropertyTypeReadOnlyDto, PropertyTypeGroupReadOnlyDto, MemberTypeReadOnlyDto>(
new PropertyTypePropertyGroupRelator().Map, sql);
if (dtos == null || dtos.Any() == false)
return null;
if (dtos == null || dtos.Any() == false)
return null;
var factory = new MemberTypeReadOnlyFactory();
var member = factory.BuildEntity(dtos.First());
var factory = new MemberTypeReadOnlyFactory();
var member = factory.BuildEntity(dtos.First());
return member;
return member;
}
protected override IEnumerable<IMemberType> PerformGetAll(params int[] ids)
@@ -99,7 +99,7 @@ namespace Umbraco.Core.Persistence.Repositories
return sql;
}
sql.Select("umbracoNode.*", "cmsContentType.*", "cmsPropertyType.id AS PropertyTypeId", "cmsPropertyType.Alias",
sql.Select("umbracoNode.*", "cmsContentType.*", "cmsPropertyType.id AS PropertyTypeId", "cmsPropertyType.Alias",
"cmsPropertyType.Name", "cmsPropertyType.Description", "cmsPropertyType.helpText", "cmsPropertyType.mandatory",
"cmsPropertyType.validationRegExp", "cmsPropertyType.dataTypeId", "cmsPropertyType.sortOrder AS PropertyTypeSortOrder",
"cmsPropertyType.propertyTypeGroupId AS PropertyTypesGroupId", "cmsMemberType.memberCanEdit", "cmsMemberType.viewOnProfile",
@@ -179,10 +179,10 @@ namespace Umbraco.Core.Persistence.Repositories
var factory = new MemberTypeFactory(NodeObjectTypeId);
var dto = factory.BuildDto(entity);
EnsureCorrectDbTypeForBuiltInProperties(entity);
EnsureExplicitDataTypeForBuiltInProperties(entity);
PersistNewBaseContentType(dto, entity);
//Handles the MemberTypeDto (cmsMemberType table)
var memberTypeDtos = factory.BuildMemberTypeDtos(entity);
foreach (var memberTypeDto in memberTypeDtos)
@@ -216,12 +216,12 @@ namespace Umbraco.Core.Persistence.Repositories
var factory = new MemberTypeFactory(NodeObjectTypeId);
var dto = factory.BuildDto(entity);
EnsureCorrectDbTypeForBuiltInProperties(entity);
EnsureExplicitDataTypeForBuiltInProperties(entity);
PersistUpdatedBaseContentType(dto, entity);
//Remove existing entries before inserting new ones
Database.Delete<MemberTypeDto>("WHERE NodeId = @Id", new {Id = entity.Id});
Database.Delete<MemberTypeDto>("WHERE NodeId = @Id", new { Id = entity.Id });
//Handles the MemberTypeDto (cmsMemberType table)
var memberTypeDtos = factory.BuildMemberTypeDtos(entity);
@@ -236,11 +236,29 @@ namespace Umbraco.Core.Persistence.Repositories
#endregion
/// <summary>
/// Ensure that all the built-in membership provider properties have their correct db types
/// and property editors assigned.
/// Override so we can specify explicit db type's on any property types that are built-in.
/// </summary>
/// <param name="dataTypeId"></param>
/// <param name="dbType"></param>
/// <param name="propertyTypeAlias"></param>
/// <returns></returns>
protected override PropertyType CreatePropertyType(Guid dataTypeId, DataTypeDatabaseType dbType, string propertyTypeAlias)
{
//custom property type constructor logic to set explicit dbtype's for built in properties
var stdProps = Constants.Conventions.Member.GetStandardPropertyTypeStubs();
var propDbType = GetDbTypeForBuiltInProperty(propertyTypeAlias, dbType, stdProps);
return new PropertyType(dataTypeId, propDbType.Result,
//This flag tells the property type that it has an explicit dbtype and that it cannot be changed
// which is what we want for the built-in properties.
propDbType.Success);
}
/// <summary>
/// Ensure that all the built-in membership provider properties have their correct data type
/// and property editors assigned. This occurs prior to saving so that the correct values are persisted.
/// </summary>
/// <param name="memberType"></param>
private static void EnsureCorrectDbTypeForBuiltInProperties(IContentTypeBase memberType)
private static void EnsureExplicitDataTypeForBuiltInProperties(IContentTypeBase memberType)
{
var stdProps = Constants.Conventions.Member.GetStandardPropertyTypeStubs();
foreach (var propertyType in memberType.PropertyTypes)
@@ -248,7 +266,6 @@ namespace Umbraco.Core.Persistence.Repositories
var dbTypeAttempt = GetDbTypeForBuiltInProperty(propertyType.Alias, propertyType.DataTypeDatabaseType, stdProps);
if (dbTypeAttempt)
{
propertyType.DataTypeDatabaseType = dbTypeAttempt.Result;
//this reset's it's current data type reference which will be re-assigned based on the property editor assigned on the next line
propertyType.DataTypeDefinitionId = 0;
propertyType.DataTypeId = GetPropertyEditorForBuiltInProperty(propertyType.Alias, propertyType.DataTypeId, stdProps).Result;
@@ -281,7 +298,7 @@ namespace Umbraco.Core.Persistence.Repositories
/// Successful attempt if it was a built in property
/// </returns>
internal static Attempt<DataTypeDatabaseType> GetDbTypeForBuiltInProperty(
string propAlias,
string propAlias,
DataTypeDatabaseType dbType,
Dictionary<string, PropertyType> standardProps)
{
@@ -307,7 +324,7 @@ namespace Umbraco.Core.Persistence.Repositories
/// Successful attempt if it was a built in property
/// </returns>
internal static Attempt<Guid> GetPropertyEditorForBuiltInProperty(
string propAlias,
string propAlias,
Guid propertyEditor,
Dictionary<string, PropertyType> standardProps)
{
@@ -117,7 +117,10 @@ namespace Umbraco.Core.Persistence.Repositories
/// <param name="userId"></param>
/// <param name="permissions"></param>
/// <param name="entityIds"></param>
public void AssignUserPermissions(int userId, IEnumerable<char> permissions, params int[] entityIds)
/// <remarks>
/// This will first clear the permissions for this user and entities and recreate them
/// </remarks>
public void ReplaceUserPermissions(int userId, IEnumerable<char> permissions, params int[] entityIds)
{
var db = _unitOfWork.Database;
using (var trans = db.GetTransaction())
@@ -155,15 +158,18 @@ namespace Umbraco.Core.Persistence.Repositories
/// <param name="entity"></param>
/// <param name="permission"></param>
/// <param name="userIds"></param>
/// <remarks>
/// This will first clear the permissions for this entity then re-create them
/// </remarks>
public void AssignEntityPermissions(TEntity entity, char permission, IEnumerable<int> userIds)
public void AssignEntityPermission(TEntity entity, char permission, IEnumerable<int> userIds)
{
var db = _unitOfWork.Database;
using (var trans = db.GetTransaction())
{
db.Execute("DELETE FROM umbracoUser2NodePermission WHERE nodeId=@nodeId", new {nodeId = entity.Id});
db.Execute("DELETE FROM umbracoUser2NodePermission WHERE nodeId=@nodeId AND permission=@permission AND userId in (@userIds)",
new
{
nodeId = entity.Id,
permission = permission.ToString(CultureInfo.InvariantCulture),
userIds = userIds
});
var actions = userIds.Select(id => new User2NodePermissionDto
{
@@ -192,7 +198,7 @@ namespace Umbraco.Core.Persistence.Repositories
/// <remarks>
/// This will first clear the permissions for this entity then re-create them
/// </remarks>
public void AssignEntityPermissions(TEntity entity, IEnumerable<Tuple<int, string>> userPermissions)
public void ReplaceEntityPermissions(TEntity entity, IEnumerable<Tuple<int, string>> userPermissions)
{
var db = _unitOfWork.Database;
using (var trans = db.GetTransaction())
@@ -206,7 +212,9 @@ namespace Umbraco.Core.Persistence.Repositories
UserId = p.Item1
}).ToArray();
_unitOfWork.Database.BulkInsertRecords(actions);
_unitOfWork.Database.BulkInsertRecords(actions, trans);
trans.Complete();
//Raise the event
AssignedPermissions.RaiseEvent(
@@ -325,15 +325,15 @@ namespace Umbraco.Core.Persistence.Repositories
}
/// <summary>
/// Assigns the same permission set for a single user to any number of entities
/// Replaces the same permission set for a single user to any number of entities
/// </summary>
/// <param name="userId"></param>
/// <param name="permissions"></param>
/// <param name="entityIds"></param>
public void AssignUserPermissions(int userId, IEnumerable<char> permissions, params int[] entityIds)
public void ReplaceUserPermissions(int userId, IEnumerable<char> permissions, params int[] entityIds)
{
var repo = new PermissionRepository<IContent>(UnitOfWork, _cacheHelper);
repo.AssignUserPermissions(userId, permissions, entityIds);
repo.ReplaceUserPermissions(userId, permissions, entityIds);
}
#endregion
@@ -6,7 +6,7 @@ namespace Umbraco.Core.Security
/// An interface for exposing the content type properties for storing membership data in when
/// a membership provider's data is backed by an Umbraco content type.
/// </summary>
public interface IUmbracoContentTypeMembershipProvider
public interface IUmbracoMemberTypeMembershipProvider
{
string LockPropertyTypeAlias { get; }
+2 -2
View File
@@ -65,12 +65,12 @@ namespace Umbraco.Core.Services
/// <param name="entity"></param>
/// <param name="permission"></param>
/// <param name="userIds"></param>
public void AssignContentPermissions(IContent entity, char permission, IEnumerable<int> userIds)
public void AssignContentPermission(IContent entity, char permission, IEnumerable<int> userIds)
{
var uow = _uowProvider.GetUnitOfWork();
using (var repository = _repositoryFactory.CreateContentRepository(uow))
{
repository.AssignEntityPermissions(entity, permission, userIds);
repository.AssignEntityPermission(entity, permission, userIds);
}
}
+1 -1
View File
@@ -17,7 +17,7 @@ namespace Umbraco.Core.Services
/// <param name="entity"></param>
/// <param name="permission"></param>
/// <param name="userIds"></param>
void AssignContentPermissions(IContent entity, char permission, IEnumerable<int> userIds);
void AssignContentPermission(IContent entity, char permission, IEnumerable<int> userIds);
/// <summary>
/// Gets the list of permissions for the content item
@@ -48,7 +48,7 @@ namespace Umbraco.Core.Services
/// <param name="memberTypeAlias"></param>
/// <param name="raiseEvents"></param>
/// <returns></returns>
T CreateMemberWithIdentity(string username, string email, string password, string memberTypeAlias, bool raiseEvents = true);
T CreateWithIdentity(string username, string email, string password, string memberTypeAlias, bool raiseEvents = true);
/// <summary>
/// Gets the member by the provider key
@@ -68,19 +68,19 @@ namespace Umbraco.Core.Services
void Delete(T membershipUser);
void Save(T membershipUser, bool raiseEvents = true);
void Save(T entity, bool raiseEvents = true);
void Save(IEnumerable<T> members, bool raiseEvents = true);
void Save(IEnumerable<T> entities, bool raiseEvents = true);
IEnumerable<T> FindMembersByEmail(string emailStringToMatch, int pageIndex, int pageSize, out int totalRecords, StringPropertyMatchType matchType = StringPropertyMatchType.StartsWith);
IEnumerable<T> FindByEmail(string emailStringToMatch, int pageIndex, int pageSize, out int totalRecords, StringPropertyMatchType matchType = StringPropertyMatchType.StartsWith);
IEnumerable<T> FindMembersByUsername(string login, int pageIndex, int pageSize, out int totalRecords, StringPropertyMatchType matchType = StringPropertyMatchType.StartsWith);
IEnumerable<T> FindByUsername(string login, int pageIndex, int pageSize, out int totalRecords, StringPropertyMatchType matchType = StringPropertyMatchType.StartsWith);
/// <summary>
/// Gets the total number of members based on the count type
/// </summary>
/// <returns></returns>
int GetMemberCount(MemberCountType countType);
int GetCount(MemberCountType countType);
/// <summary>
/// Gets a list of paged member data
@@ -89,6 +89,6 @@ namespace Umbraco.Core.Services
/// <param name="pageSize"></param>
/// <param name="totalRecords"></param>
/// <returns></returns>
IEnumerable<T> GetAllMembers(int pageIndex, int pageSize, out int totalRecords);
IEnumerable<T> GetAll(int pageIndex, int pageSize, out int totalRecords);
}
}
+2 -2
View File
@@ -54,12 +54,12 @@ namespace Umbraco.Core.Services
IEnumerable<EntityPermission> GetPermissions(IUser user, params int[] nodeIds);
/// <summary>
/// Assigns the same permission set for a single user to any number of entities
/// Replaces the same permission set for a single user to any number of entities
/// </summary>
/// <param name="userId"></param>
/// <param name="permissions"></param>
/// <param name="entityIds"></param>
void AssignUserPermissions(int userId, IEnumerable<char> permissions, params int[] entityIds);
void ReplaceUserPermissions(int userId, IEnumerable<char> permissions, params int[] entityIds);
#region User types
+17 -17
View File
@@ -254,7 +254,7 @@ namespace Umbraco.Core.Services
/// <param name="pageIndex"></param>
/// <param name="pageSize"></param>
/// <returns></returns>
public IEnumerable<IMember> FindMembersByEmail(string emailStringToMatch, int pageIndex, int pageSize, out int totalRecords, StringPropertyMatchType matchType = StringPropertyMatchType.StartsWith)
public IEnumerable<IMember> FindByEmail(string emailStringToMatch, int pageIndex, int pageSize, out int totalRecords, StringPropertyMatchType matchType = StringPropertyMatchType.StartsWith)
{
var uow = _uowProvider.GetUnitOfWork();
using (var repository = _repositoryFactory.CreateMemberRepository(uow))
@@ -286,7 +286,7 @@ namespace Umbraco.Core.Services
}
}
public IEnumerable<IMember> FindMembersByUsername(string login, int pageIndex, int pageSize, out int totalRecords, StringPropertyMatchType matchType = StringPropertyMatchType.StartsWith)
public IEnumerable<IMember> FindByUsername(string login, int pageIndex, int pageSize, out int totalRecords, StringPropertyMatchType matchType = StringPropertyMatchType.StartsWith)
{
var uow = _uowProvider.GetUnitOfWork();
using (var repository = _repositoryFactory.CreateMemberRepository(uow))
@@ -527,7 +527,7 @@ namespace Umbraco.Core.Services
/// that have their last active date within the Membership.UserIsOnlineTimeWindow (which is in minutes). It isn't exact science
/// but that is how MS have made theirs so we'll follow that principal.
/// </remarks>
public int GetMemberCount(MemberCountType countType)
public int GetCount(MemberCountType countType)
{
using (var repository = _repositoryFactory.CreateMemberRepository(_uowProvider.GetUnitOfWork()))
{
@@ -567,7 +567,7 @@ namespace Umbraco.Core.Services
}
public IEnumerable<IMember> GetAllMembers(int pageIndex, int pageSize, out int totalRecords)
public IEnumerable<IMember> GetAll(int pageIndex, int pageSize, out int totalRecords)
{
var uow = _uowProvider.GetUnitOfWork();
using (var repository = _repositoryFactory.CreateMemberRepository(uow))
@@ -617,7 +617,7 @@ namespace Umbraco.Core.Services
/// <param name="memberTypeAlias"></param>
/// <param name="raiseEvents"></param>
/// <returns></returns>
public IMember CreateMemberWithIdentity(string username, string email, string password, string memberTypeAlias, bool raiseEvents = true)
public IMember CreateWithIdentity(string username, string email, string password, string memberTypeAlias, bool raiseEvents = true)
{
var uow = _uowProvider.GetUnitOfWork();
IMemberType memberType;
@@ -716,13 +716,13 @@ namespace Umbraco.Core.Services
/// <summary>
/// Saves an updated Member
/// </summary>
/// <param name="member"></param>
/// <param name="entity"></param>
/// <param name="raiseEvents"></param>
public void Save(IMember member, bool raiseEvents = true)
public void Save(IMember entity, bool raiseEvents = true)
{
if (raiseEvents)
{
if (Saving.IsRaisedEventCancelled(new SaveEventArgs<IMember>(member), this))
if (Saving.IsRaisedEventCancelled(new SaveEventArgs<IMember>(entity), this))
{
return;
}
@@ -732,22 +732,22 @@ namespace Umbraco.Core.Services
var uow = _uowProvider.GetUnitOfWork();
using (var repository = _repositoryFactory.CreateMemberRepository(uow))
{
repository.AddOrUpdate(member);
repository.AddOrUpdate(entity);
uow.Commit();
var xml = member.ToXml();
CreateAndSaveMemberXml(xml, member.Id, uow.Database);
var xml = entity.ToXml();
CreateAndSaveMemberXml(xml, entity.Id, uow.Database);
}
if (raiseEvents)
Saved.RaiseEvent(new SaveEventArgs<IMember>(member, false), this);
Saved.RaiseEvent(new SaveEventArgs<IMember>(entity, false), this);
}
public void Save(IEnumerable<IMember> members, bool raiseEvents = true)
public void Save(IEnumerable<IMember> entities, bool raiseEvents = true)
{
if (raiseEvents)
{
if (Saving.IsRaisedEventCancelled(new SaveEventArgs<IMember>(members), this))
if (Saving.IsRaisedEventCancelled(new SaveEventArgs<IMember>(entities), this))
return;
}
using (new WriteLock(Locker))
@@ -755,7 +755,7 @@ namespace Umbraco.Core.Services
var uow = _uowProvider.GetUnitOfWork();
using (var repository = _repositoryFactory.CreateMemberRepository(uow))
{
foreach (var member in members)
foreach (var member in entities)
{
repository.AddOrUpdate(member);
}
@@ -763,14 +763,14 @@ namespace Umbraco.Core.Services
//commit the whole lot in one go
uow.Commit();
foreach (var member in members)
foreach (var member in entities)
{
CreateAndSaveMemberXml(member.ToXml(), member.Id, uow.Database);
}
}
if (raiseEvents)
Saved.RaiseEvent(new SaveEventArgs<IMember>(members, false), this);
Saved.RaiseEvent(new SaveEventArgs<IMember>(entities, false), this);
}
}
@@ -58,7 +58,7 @@ namespace Umbraco.Core.Services
IContent[] allVersions = null;
int totalUsers;
var allUsers = _userService.GetAllMembers(0, int.MaxValue, out totalUsers);
var allUsers = _userService.GetAll(0, int.MaxValue, out totalUsers);
foreach (var u in allUsers)
{
if (u.IsApproved == false) continue;
+16 -16
View File
@@ -121,7 +121,7 @@ namespace Umbraco.Core.Services
}
}
public IUser CreateMemberWithIdentity(string username, string email, string password, string memberTypeAlias, bool raiseEvents = true)
public IUser CreateWithIdentity(string username, string email, string password, string memberTypeAlias, bool raiseEvents = true)
{
var userType = GetUserTypeByAlias(memberTypeAlias);
if (userType == null)
@@ -220,37 +220,37 @@ namespace Umbraco.Core.Services
}
}
public void Save(IUser membershipUser, bool raiseEvents = true)
public void Save(IUser entity, bool raiseEvents = true)
{
if (raiseEvents)
{
if (SavingUser.IsRaisedEventCancelled(new SaveEventArgs<IUser>(membershipUser), this))
if (SavingUser.IsRaisedEventCancelled(new SaveEventArgs<IUser>(entity), this))
return;
}
var uow = _uowProvider.GetUnitOfWork();
using (var repository = _repositoryFactory.CreateUserRepository(uow))
{
repository.AddOrUpdate(membershipUser);
repository.AddOrUpdate(entity);
uow.Commit();
}
if (raiseEvents)
SavedUser.RaiseEvent(new SaveEventArgs<IUser>(membershipUser, false), this);
SavedUser.RaiseEvent(new SaveEventArgs<IUser>(entity, false), this);
}
public void Save(IEnumerable<IUser> members, bool raiseEvents = true)
public void Save(IEnumerable<IUser> entities, bool raiseEvents = true)
{
if (raiseEvents)
{
if (SavingUser.IsRaisedEventCancelled(new SaveEventArgs<IUser>(members), this))
if (SavingUser.IsRaisedEventCancelled(new SaveEventArgs<IUser>(entities), this))
return;
}
var uow = _uowProvider.GetUnitOfWork();
using (var repository = _repositoryFactory.CreateUserRepository(uow))
{
foreach (var member in members)
foreach (var member in entities)
{
repository.AddOrUpdate(member);
}
@@ -259,10 +259,10 @@ namespace Umbraco.Core.Services
}
if (raiseEvents)
SavedUser.RaiseEvent(new SaveEventArgs<IUser>(members, false), this);
SavedUser.RaiseEvent(new SaveEventArgs<IUser>(entities, false), this);
}
public IEnumerable<IUser> FindMembersByEmail(string emailStringToMatch, int pageIndex, int pageSize, out int totalRecords, StringPropertyMatchType matchType = StringPropertyMatchType.StartsWith)
public IEnumerable<IUser> FindByEmail(string emailStringToMatch, int pageIndex, int pageSize, out int totalRecords, StringPropertyMatchType matchType = StringPropertyMatchType.StartsWith)
{
var uow = _uowProvider.GetUnitOfWork();
using (var repository = _repositoryFactory.CreateUserRepository(uow))
@@ -294,7 +294,7 @@ namespace Umbraco.Core.Services
}
}
public IEnumerable<IUser> FindMembersByUsername(string login, int pageIndex, int pageSize, out int totalRecords, StringPropertyMatchType matchType = StringPropertyMatchType.StartsWith)
public IEnumerable<IUser> FindByUsername(string login, int pageIndex, int pageSize, out int totalRecords, StringPropertyMatchType matchType = StringPropertyMatchType.StartsWith)
{
var uow = _uowProvider.GetUnitOfWork();
using (var repository = _repositoryFactory.CreateUserRepository(uow))
@@ -326,7 +326,7 @@ namespace Umbraco.Core.Services
}
}
public int GetMemberCount(MemberCountType countType)
public int GetCount(MemberCountType countType)
{
using (var repository = _repositoryFactory.CreateUserRepository(_uowProvider.GetUnitOfWork()))
{
@@ -362,7 +362,7 @@ namespace Umbraco.Core.Services
}
}
public IEnumerable<IUser> GetAllMembers(int pageIndex, int pageSize, out int totalRecords)
public IEnumerable<IUser> GetAll(int pageIndex, int pageSize, out int totalRecords)
{
var uow = _uowProvider.GetUnitOfWork();
using (var repository = _repositoryFactory.CreateUserRepository(uow))
@@ -401,17 +401,17 @@ namespace Umbraco.Core.Services
}
/// <summary>
/// Assigns the same permission set for a single user to any number of entities
/// Replaces the same permission set for a single user to any number of entities
/// </summary>
/// <param name="userId"></param>
/// <param name="permissions"></param>
/// <param name="entityIds"></param>
public void AssignUserPermissions(int userId, IEnumerable<char> permissions, params int[] entityIds)
public void ReplaceUserPermissions(int userId, IEnumerable<char> permissions, params int[] entityIds)
{
var uow = _uowProvider.GetUnitOfWork();
using (var repository = _repositoryFactory.CreateUserRepository(uow))
{
repository.AssignUserPermissions(userId, permissions, entityIds);
repository.ReplaceUserPermissions(userId, permissions, entityIds);
}
}
+36 -4
View File
@@ -1,4 +1,4 @@
<?xml version="1.0"?>
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<configSections>
@@ -71,9 +71,9 @@
<system.data>
<DbProviderFactories>
<remove invariant="System.Data.SqlServerCe.4.0"/>
<remove invariant="System.Data.SqlServerCe.4.0" />
<add name="Microsoft SQL Server Compact Data Provider 4.0" invariant="System.Data.SqlServerCe.4.0" description=".NET Framework Data Provider for Microsoft SQL Server Compact" type="System.Data.SqlServerCe.SqlCeProviderFactory, System.Data.SqlServerCe, Version=4.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91"/>
<remove invariant="MySql.Data.MySqlClient"/>
<remove invariant="MySql.Data.MySqlClient" />
<add name="MySQL Data Provider" invariant="MySql.Data.MySqlClient" description=".Net Framework Data Provider for MySQL" type="MySql.Data.MySqlClient.MySqlClientFactory, MySql.Data, Version=6.6.4.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d"/>
</DbProviderFactories>
</system.data>
@@ -91,4 +91,36 @@
</siteMap>
</system.web>
<startup><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5"/></startup></configuration>
<startup><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5"/></startup>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.0.0.0" newVersion="4.0.0.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Web.WebPages" publicKeyToken="31bf3856ad364e35" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-2.0.0.0" newVersion="2.0.0.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Web.Helpers" publicKeyToken="31bf3856ad364e35" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-2.0.0.0" newVersion="2.0.0.0" />
</dependentAssembly>
</assemblyBinding>
</runtime>
</configuration>
@@ -94,7 +94,7 @@ namespace Umbraco.Tests.Membership
mServiceMock.Setup(service => service.GetByEmail("test@test.com")).Returns(() => null);
mServiceMock.Setup(service => service.GetDefaultMemberType()).Returns("Member");
mServiceMock.Setup(
service => service.CreateMemberWithIdentity(It.IsAny<string>(), It.IsAny<string>(), It.IsAny<string>(), It.IsAny<string>(), It.IsAny<bool>()))
service => service.CreateWithIdentity(It.IsAny<string>(), It.IsAny<string>(), It.IsAny<string>(), It.IsAny<string>(), It.IsAny<bool>()))
.Callback((string u, string e, string p, string m, bool b) =>
{
createdMember = new Member("test", e, u, p, memberType);
@@ -125,7 +125,7 @@ namespace Umbraco.Tests.Membership
mServiceMock.Setup(service => service.GetByEmail("test@test.com")).Returns(() => null);
mServiceMock.Setup(service => service.GetDefaultMemberType()).Returns("Member");
mServiceMock.Setup(
service => service.CreateMemberWithIdentity(It.IsAny<string>(), It.IsAny<string>(), It.IsAny<string>(), It.IsAny<string>(), It.IsAny<bool>()))
service => service.CreateWithIdentity(It.IsAny<string>(), It.IsAny<string>(), It.IsAny<string>(), It.IsAny<string>(), It.IsAny<bool>()))
.Callback((string u, string e, string p, string m, bool b) =>
{
createdMember = new Member("test", e, u, p, memberType);
@@ -158,7 +158,7 @@ namespace Umbraco.Tests.Membership
mServiceMock.Setup(service => service.GetByEmail("test@test.com")).Returns(() => null);
mServiceMock.Setup(service => service.GetDefaultMemberType()).Returns("Member");
mServiceMock.Setup(
service => service.CreateMemberWithIdentity(It.IsAny<string>(), It.IsAny<string>(), It.IsAny<string>(), It.IsAny<string>(), It.IsAny<bool>()))
service => service.CreateWithIdentity(It.IsAny<string>(), It.IsAny<string>(), It.IsAny<string>(), It.IsAny<string>(), It.IsAny<bool>()))
.Callback((string u, string e, string p, string m, bool b) =>
{
createdMember = new Member("test", e, u, p, memberType);
@@ -70,7 +70,7 @@ namespace Umbraco.Tests.Persistence.Repositories
unitOfWork.Commit();
// Act
repository.AssignEntityPermissions(parentPage, 'A', new int[] { 0 });
repository.AssignEntityPermission(parentPage, 'A', new int[] { 0 });
var childPage = MockedContent.CreateSimpleContent(contentType, "child", parentPage);
repository.AddOrUpdate(childPage);
unitOfWork.Commit();
@@ -61,7 +61,7 @@ namespace Umbraco.Tests.Persistence.Repositories
var standardProps = Constants.Conventions.Member.GetStandardPropertyTypeStubs();
Assert.That(sut, Is.Not.Null);
Assert.That(sut.PropertyGroups.Count(), Is.EqualTo(1));
Assert.That(sut.PropertyGroups.Count(), Is.EqualTo(2));
Assert.That(sut.PropertyTypes.Count(), Is.EqualTo(3 + standardProps.Count));
Assert.That(sut.PropertyGroups.Any(x => x.HasIdentity == false || x.Id == 0), Is.False);
@@ -149,7 +149,7 @@ namespace Umbraco.Tests.Persistence.Repositories
memberType = repository.Get(memberType.Id);
Assert.That(memberType.PropertyTypes.Count(), Is.EqualTo(3 + Constants.Conventions.Member.GetStandardPropertyTypeStubs().Count));
Assert.That(memberType.PropertyGroups.Count(), Is.EqualTo(1));
Assert.That(memberType.PropertyGroups.Count(), Is.EqualTo(2));
}
}
@@ -79,7 +79,8 @@ namespace Umbraco.Tests.Routing
var docRequest = new PublishedContentRequest(routingContext.UmbracoContext.CleanedUmbracoUrl, routingContext)
{
PublishedContent = routingContext.UmbracoContext.ContentCache.GetById(1174),
TemplateModel = template
TemplateModel = template,
RenderingEngine = RenderingEngine.Mvc
};
var handler = new RenderRouteHandler(new TestControllerFactory(), routingContext.UmbracoContext);
@@ -5,6 +5,7 @@ using Umbraco.Core;
using Umbraco.Core.Models;
using Umbraco.Core.Models.Membership;
using Umbraco.Core.Models.Rdbms;
using Umbraco.Core.Persistence;
using Umbraco.Core.Persistence.Querying;
using Umbraco.Core.Services;
using Umbraco.Tests.TestHelpers.Entities;
@@ -380,7 +381,7 @@ namespace Umbraco.Tests.Services
ServiceContext.MemberService.Save(members);
int totalRecs;
var found = ServiceContext.MemberService.GetAllMembers(0, 2, out totalRecs);
var found = ServiceContext.MemberService.GetAll(0, 2, out totalRecs);
Assert.AreEqual(2, found.Count());
Assert.AreEqual(10, totalRecs);
@@ -400,7 +401,7 @@ namespace Umbraco.Tests.Services
ServiceContext.MemberService.Save(customMember);
int totalRecs;
var found = ServiceContext.MemberService.FindMembersByEmail("tes", 0, 100, out totalRecs, StringPropertyMatchType.StartsWith);
var found = ServiceContext.MemberService.FindByEmail("tes", 0, 100, out totalRecs, StringPropertyMatchType.StartsWith);
Assert.AreEqual(10, found.Count());
}
@@ -417,7 +418,7 @@ namespace Umbraco.Tests.Services
ServiceContext.MemberService.Save(customMember);
int totalRecs;
var found = ServiceContext.MemberService.FindMembersByEmail("test.com", 0, 100, out totalRecs, StringPropertyMatchType.EndsWith);
var found = ServiceContext.MemberService.FindByEmail("test.com", 0, 100, out totalRecs, StringPropertyMatchType.EndsWith);
Assert.AreEqual(11, found.Count());
}
@@ -434,7 +435,7 @@ namespace Umbraco.Tests.Services
ServiceContext.MemberService.Save(customMember);
int totalRecs;
var found = ServiceContext.MemberService.FindMembersByEmail("test", 0, 100, out totalRecs, StringPropertyMatchType.Contains);
var found = ServiceContext.MemberService.FindByEmail("test", 0, 100, out totalRecs, StringPropertyMatchType.Contains);
Assert.AreEqual(11, found.Count());
}
@@ -451,7 +452,7 @@ namespace Umbraco.Tests.Services
ServiceContext.MemberService.Save(customMember);
int totalRecs;
var found = ServiceContext.MemberService.FindMembersByEmail("hello@test.com", 0, 100, out totalRecs, StringPropertyMatchType.Exact);
var found = ServiceContext.MemberService.FindByEmail("hello@test.com", 0, 100, out totalRecs, StringPropertyMatchType.Exact);
Assert.AreEqual(1, found.Count());
}
@@ -468,7 +469,7 @@ namespace Umbraco.Tests.Services
ServiceContext.MemberService.Save(customMember);
int totalRecs;
var found = ServiceContext.MemberService.FindMembersByUsername("tes", 0, 100, out totalRecs, StringPropertyMatchType.StartsWith);
var found = ServiceContext.MemberService.FindByUsername("tes", 0, 100, out totalRecs, StringPropertyMatchType.StartsWith);
Assert.AreEqual(10, found.Count());
}
@@ -485,7 +486,7 @@ namespace Umbraco.Tests.Services
ServiceContext.MemberService.Save(customMember);
int totalRecs;
var found = ServiceContext.MemberService.FindMembersByUsername("llo", 0, 100, out totalRecs, StringPropertyMatchType.EndsWith);
var found = ServiceContext.MemberService.FindByUsername("llo", 0, 100, out totalRecs, StringPropertyMatchType.EndsWith);
Assert.AreEqual(1, found.Count());
}
@@ -502,7 +503,7 @@ namespace Umbraco.Tests.Services
ServiceContext.MemberService.Save(customMember);
int totalRecs;
var found = ServiceContext.MemberService.FindMembersByUsername("test", 0, 100, out totalRecs, StringPropertyMatchType.Contains);
var found = ServiceContext.MemberService.FindByUsername("test", 0, 100, out totalRecs, StringPropertyMatchType.Contains);
Assert.AreEqual(11, found.Count());
}
@@ -519,7 +520,7 @@ namespace Umbraco.Tests.Services
ServiceContext.MemberService.Save(customMember);
int totalRecs;
var found = ServiceContext.MemberService.FindMembersByUsername("hello", 0, 100, out totalRecs, StringPropertyMatchType.Exact);
var found = ServiceContext.MemberService.FindByUsername("hello", 0, 100, out totalRecs, StringPropertyMatchType.Exact);
Assert.AreEqual(1, found.Count());
}
@@ -849,7 +850,7 @@ namespace Umbraco.Tests.Services
var customMember = MockedMember.CreateSimpleMember(memberType, "hello", "hello@test.com", "hello", "hello");
ServiceContext.MemberService.Save(customMember);
var found = ServiceContext.MemberService.GetMemberCount(MemberCountType.All);
var found = ServiceContext.MemberService.GetCount(MemberCountType.All);
Assert.AreEqual(11, found);
}
@@ -866,7 +867,7 @@ namespace Umbraco.Tests.Services
customMember.SetValue(Constants.Conventions.Member.LastLoginDate, DateTime.Now);
ServiceContext.MemberService.Save(customMember);
var found = ServiceContext.MemberService.GetMemberCount(MemberCountType.Online);
var found = ServiceContext.MemberService.GetCount(MemberCountType.Online);
Assert.AreEqual(9, found);
}
@@ -883,7 +884,7 @@ namespace Umbraco.Tests.Services
customMember.SetValue(Constants.Conventions.Member.IsLockedOut, true);
ServiceContext.MemberService.Save(customMember);
var found = ServiceContext.MemberService.GetMemberCount(MemberCountType.LockedOut);
var found = ServiceContext.MemberService.GetCount(MemberCountType.LockedOut);
Assert.AreEqual(6, found);
}
@@ -900,7 +901,7 @@ namespace Umbraco.Tests.Services
customMember.SetValue(Constants.Conventions.Member.IsApproved, false);
ServiceContext.MemberService.Save(customMember);
var found = ServiceContext.MemberService.GetMemberCount(MemberCountType.Approved);
var found = ServiceContext.MemberService.GetCount(MemberCountType.Approved);
Assert.AreEqual(5, found);
}
@@ -924,5 +925,41 @@ namespace Umbraco.Tests.Services
Assert.IsTrue(found.Comments.IsNullOrWhiteSpace());
}
/// <summary>
/// Because we are forcing some of the built-ins to be Labels which have an underlying db type as nvarchar but we need
/// to ensure that the dates/int get saved to the correct column anyways.
/// </summary>
[Test]
public void Setting_DateTime_Property_On_Built_In_Member_Property_Saves_To_Correct_Column()
{
IMemberType memberType = MockedContentTypes.CreateSimpleMemberType();
ServiceContext.MemberTypeService.Save(memberType);
var member = MockedMember.CreateSimpleMember(memberType, "test", "test@test.com", "test", "test");
var date = DateTime.Now;
member.LastLoginDate = DateTime.Now;
ServiceContext.MemberService.Save(member);
var result = ServiceContext.MemberService.GetById(member.Id);
Assert.AreEqual(
date.TruncateTo(DateTimeExtensions.DateTruncate.Second),
result.LastLoginDate.TruncateTo(DateTimeExtensions.DateTruncate.Second));
//now ensure the col is correct
var sql = new Sql().Select("cmsPropertyData.*")
.From<PropertyDataDto>()
.InnerJoin<PropertyTypeDto>()
.On<PropertyDataDto, PropertyTypeDto>(dto => dto.PropertyTypeId, dto => dto.Id)
.Where<PropertyDataDto>(dto => dto.NodeId == member.Id)
.Where<PropertyTypeDto>(dto => dto.Alias == Constants.Conventions.Member.LastLoginDate);
var colResult = DatabaseContext.Database.Fetch<PropertyDataDto>(sql);
Assert.AreEqual(1, colResult.Count);
Assert.IsTrue(colResult.First().Date.HasValue);
Assert.IsFalse(colResult.First().Integer.HasValue);
Assert.IsNull(colResult.First().Text);
Assert.IsNull(colResult.First().VarChar);
}
}
}
+14 -14
View File
@@ -76,14 +76,14 @@ namespace Umbraco.Tests.Services
MockedContent.CreateSimpleContent(contentType)
};
ServiceContext.ContentService.Save(content);
ServiceContext.ContentService.AssignContentPermissions(content.ElementAt(0), ActionBrowse.Instance.Letter, new int[] { user.Id });
ServiceContext.ContentService.AssignContentPermissions(content.ElementAt(0), ActionDelete.Instance.Letter, new int[] { user.Id });
ServiceContext.ContentService.AssignContentPermissions(content.ElementAt(0), ActionMove.Instance.Letter, new int[] { user.Id });
ServiceContext.ContentService.AssignContentPermission(content.ElementAt(0), ActionBrowse.Instance.Letter, new int[] { user.Id });
ServiceContext.ContentService.AssignContentPermission(content.ElementAt(0), ActionDelete.Instance.Letter, new int[] { user.Id });
ServiceContext.ContentService.AssignContentPermission(content.ElementAt(0), ActionMove.Instance.Letter, new int[] { user.Id });
ServiceContext.ContentService.AssignContentPermissions(content.ElementAt(1), ActionBrowse.Instance.Letter, new int[] { user.Id });
ServiceContext.ContentService.AssignContentPermissions(content.ElementAt(1), ActionDelete.Instance.Letter, new int[] { user.Id });
ServiceContext.ContentService.AssignContentPermission(content.ElementAt(1), ActionBrowse.Instance.Letter, new int[] { user.Id });
ServiceContext.ContentService.AssignContentPermission(content.ElementAt(1), ActionDelete.Instance.Letter, new int[] { user.Id });
ServiceContext.ContentService.AssignContentPermissions(content.ElementAt(2), ActionBrowse.Instance.Letter, new int[] { user.Id });
ServiceContext.ContentService.AssignContentPermission(content.ElementAt(2), ActionBrowse.Instance.Letter, new int[] { user.Id });
// Act
var permissions = userService.GetPermissions(user, content.ElementAt(0).Id, content.ElementAt(1).Id, content.ElementAt(2).Id);
@@ -191,7 +191,7 @@ namespace Umbraco.Tests.Services
ServiceContext.UserService.Save(customUser);
int totalRecs;
var found = ServiceContext.UserService.FindMembersByEmail("tes", 0, 100, out totalRecs, StringPropertyMatchType.StartsWith);
var found = ServiceContext.UserService.FindByEmail("tes", 0, 100, out totalRecs, StringPropertyMatchType.StartsWith);
Assert.AreEqual(10, found.Count());
}
@@ -209,7 +209,7 @@ namespace Umbraco.Tests.Services
ServiceContext.UserService.Save(customUser);
int totalRecs;
var found = ServiceContext.UserService.FindMembersByEmail("test.com", 0, 100, out totalRecs, StringPropertyMatchType.EndsWith);
var found = ServiceContext.UserService.FindByEmail("test.com", 0, 100, out totalRecs, StringPropertyMatchType.EndsWith);
Assert.AreEqual(11, found.Count());
}
@@ -227,7 +227,7 @@ namespace Umbraco.Tests.Services
ServiceContext.UserService.Save(customUser);
int totalRecs;
var found = ServiceContext.UserService.FindMembersByEmail("test", 0, 100, out totalRecs, StringPropertyMatchType.Contains);
var found = ServiceContext.UserService.FindByEmail("test", 0, 100, out totalRecs, StringPropertyMatchType.Contains);
Assert.AreEqual(11, found.Count());
}
@@ -245,7 +245,7 @@ namespace Umbraco.Tests.Services
ServiceContext.UserService.Save(customUser);
int totalRecs;
var found = ServiceContext.UserService.FindMembersByEmail("hello@test.com", 0, 100, out totalRecs, StringPropertyMatchType.Exact);
var found = ServiceContext.UserService.FindByEmail("hello@test.com", 0, 100, out totalRecs, StringPropertyMatchType.Exact);
Assert.AreEqual(1, found.Count());
}
@@ -259,7 +259,7 @@ namespace Umbraco.Tests.Services
ServiceContext.UserService.Save(users);
int totalRecs;
var found = ServiceContext.UserService.GetAllMembers(0, 2, out totalRecs);
var found = ServiceContext.UserService.GetAll(0, 2, out totalRecs);
Assert.AreEqual(2, found.Count());
// + 1 because of the built in admin user
@@ -278,7 +278,7 @@ namespace Umbraco.Tests.Services
var customUser = MockedUser.CreateUser(userType);
ServiceContext.UserService.Save(customUser);
var found = ServiceContext.UserService.GetMemberCount(MemberCountType.All);
var found = ServiceContext.UserService.GetCount(MemberCountType.All);
// + 1 because of the built in admin user
Assert.AreEqual(12, found);
@@ -309,7 +309,7 @@ namespace Umbraco.Tests.Services
customUser.IsLockedOut = true;
ServiceContext.UserService.Save(customUser);
var found = ServiceContext.UserService.GetMemberCount(MemberCountType.LockedOut);
var found = ServiceContext.UserService.GetCount(MemberCountType.LockedOut);
Assert.AreEqual(6, found);
}
@@ -326,7 +326,7 @@ namespace Umbraco.Tests.Services
customUser.IsApproved = false;
ServiceContext.UserService.Save(customUser);
var found = ServiceContext.UserService.GetMemberCount(MemberCountType.Approved);
var found = ServiceContext.UserService.GetCount(MemberCountType.Approved);
// + 1 because of the built in admin user
Assert.AreEqual(6, found);
+1 -1
View File
@@ -60,7 +60,7 @@
</Reference>
<Reference Include="Examine, Version=0.1.52.2941, Culture=neutral, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\packages\Examine.0.1.53.2941\lib\Examine.dll</HintPath>
<HintPath>..\packages\Examine.0.1.55.2941\lib\Examine.dll</HintPath>
</Reference>
<Reference Include="ICSharpCode.SharpZipLib, Version=0.86.0.518, Culture=neutral, PublicKeyToken=1b03e6acf1164f73, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
+1 -1
View File
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="AspNetWebApi.SelfHost" version="4.0.20710.0" targetFramework="net45" />
<package id="Examine" version="0.1.53.2941" targetFramework="net40" />
<package id="Examine" version="0.1.55.2941" targetFramework="net40" />
<package id="AutoMapper" version="3.0.0" targetFramework="net45" />
<package id="log4net-mediumtrust" version="2.0.0" targetFramework="net40" />
<package id="Lucene.Net" version="2.9.4.1" targetFramework="net40" />
+1 -1
View File
@@ -125,7 +125,7 @@
</Reference>
<Reference Include="Examine">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\packages\Examine.0.1.53.2941\lib\Examine.dll</HintPath>
<HintPath>..\packages\Examine.0.1.55.2941\lib\Examine.dll</HintPath>
</Reference>
<Reference Include="ImageProcessor">
<HintPath>..\packages\ImageProcessor.1.8.3.0\lib\net45\ImageProcessor.dll</HintPath>
+1 -1
View File
@@ -3,7 +3,7 @@
<package id="AutoMapper" version="3.0.0" targetFramework="net45" />
<package id="ClientDependency" version="1.7.1.1" targetFramework="net45" />
<package id="ClientDependency-Mvc" version="1.7.0.4" targetFramework="net40" />
<package id="Examine" version="0.1.53.2941" targetFramework="net40" />
<package id="Examine" version="0.1.55.2941" targetFramework="net40" />
<package id="ImageProcessor" version="1.8.3.0" targetFramework="net45" />
<package id="ImageProcessor.Web" version="3.1.1.0" targetFramework="net45" />
<package id="log4net-mediumtrust" version="2.0.0" targetFramework="net40" />
+4 -1
View File
@@ -227,7 +227,10 @@ namespace Umbraco.Web.Security
var memberType = member.ContentType;
foreach (var prop in memberType.PropertyTypes.Where(x => memberType.MemberCanEditProperty(x.Alias)))
var builtIns = Constants.Conventions.Member.GetStandardPropertyTypeStubs().Select(x => x.Key).ToArray();
foreach (var prop in memberType.PropertyTypes
.Where(x => builtIns.Contains(x.Alias) == false && memberType.MemberCanEditProperty(x.Alias)))
{
var value = string.Empty;
var propValue = member.Properties[prop.Alias];
@@ -18,7 +18,7 @@ namespace Umbraco.Web.Security.Providers
/// <summary>
/// Custom Membership Provider for Umbraco Members (User authentication for Frontend applications NOT umbraco CMS)
/// </summary>
public class MembersMembershipProvider : UmbracoServiceMembershipProvider<IMembershipMemberService, IMember>, IUmbracoContentTypeMembershipProvider
public class MembersMembershipProvider : UmbracoMembershipProvider<IMembershipMemberService, IMember>, IUmbracoMemberTypeMembershipProvider
{
public MembersMembershipProvider()
: this(ApplicationContext.Current.Services.MemberService)
@@ -19,14 +19,14 @@ namespace Umbraco.Web.Security.Providers
/// <summary>
/// Abstract Membership Provider that users any implementation of IMembershipMemberService{TEntity} service
/// </summary>
public abstract class UmbracoServiceMembershipProvider<T, TEntity> : UmbracoMembershipProviderBase
public abstract class UmbracoMembershipProvider<T, TEntity> : UmbracoMembershipProviderBase
where T : IMembershipMemberService<TEntity>
where TEntity : class, IMembershipUser
{
protected IMembershipMemberService<TEntity> MemberService { get; private set; }
protected UmbracoServiceMembershipProvider(IMembershipMemberService<TEntity> memberService)
protected UmbracoMembershipProvider(IMembershipMemberService<TEntity> memberService)
{
MemberService = memberService;
}
@@ -134,7 +134,7 @@ namespace Umbraco.Web.Security.Providers
if (MemberService.Exists(username))
{
status = MembershipCreateStatus.DuplicateUserName;
LogHelper.Warn<UmbracoServiceMembershipProvider<T, TEntity>>("Cannot create member as username already exists: " + username);
LogHelper.Warn<UmbracoMembershipProvider<T, TEntity>>("Cannot create member as username already exists: " + username);
return null;
}
@@ -142,7 +142,7 @@ namespace Umbraco.Web.Security.Providers
if (MemberService.GetByEmail(email) != null && RequiresUniqueEmail)
{
status = MembershipCreateStatus.DuplicateEmail;
LogHelper.Warn<UmbracoServiceMembershipProvider<T, TEntity>>(
LogHelper.Warn<UmbracoMembershipProvider<T, TEntity>>(
"Cannot create member as a member with the same email address exists: " + email);
return null;
}
@@ -150,7 +150,7 @@ namespace Umbraco.Web.Security.Providers
string salt;
var encodedPassword = EncryptOrHashNewPassword(password, out salt);
var member = MemberService.CreateMemberWithIdentity(
var member = MemberService.CreateWithIdentity(
username,
email,
FormatPasswordForStorage(encodedPassword, salt),
@@ -199,7 +199,7 @@ namespace Umbraco.Web.Security.Providers
/// </returns>
public override MembershipUserCollection FindUsersByEmail(string emailToMatch, int pageIndex, int pageSize, out int totalRecords)
{
var byEmail = MemberService.FindMembersByEmail(emailToMatch, pageIndex, pageSize, out totalRecords, StringPropertyMatchType.Wildcard).ToArray();
var byEmail = MemberService.FindByEmail(emailToMatch, pageIndex, pageSize, out totalRecords, StringPropertyMatchType.Wildcard).ToArray();
var collection = new MembershipUserCollection();
foreach (var m in byEmail)
@@ -221,7 +221,7 @@ namespace Umbraco.Web.Security.Providers
/// </returns>
public override MembershipUserCollection FindUsersByName(string usernameToMatch, int pageIndex, int pageSize, out int totalRecords)
{
var byEmail = MemberService.FindMembersByUsername(usernameToMatch, pageIndex, pageSize, out totalRecords, StringPropertyMatchType.Wildcard).ToArray();
var byEmail = MemberService.FindByUsername(usernameToMatch, pageIndex, pageSize, out totalRecords, StringPropertyMatchType.Wildcard).ToArray();
var collection = new MembershipUserCollection();
foreach (var m in byEmail)
@@ -244,7 +244,7 @@ namespace Umbraco.Web.Security.Providers
{
var membersList = new MembershipUserCollection();
var pagedMembers = MemberService.GetAllMembers(pageIndex, pageSize, out totalRecords);
var pagedMembers = MemberService.GetAll(pageIndex, pageSize, out totalRecords);
foreach (var m in pagedMembers)
{
@@ -266,7 +266,7 @@ namespace Umbraco.Web.Security.Providers
/// </remarks>
public override int GetNumberOfUsersOnline()
{
return MemberService.GetMemberCount(MemberCountType.Online);
return MemberService.GetCount(MemberCountType.Online);
}
/// <summary>
@@ -463,7 +463,7 @@ namespace Umbraco.Web.Security.Providers
if (RequiresUniqueEmail && user.Email.Trim().IsNullOrWhiteSpace() == false)
{
int totalRecs;
var byEmail = MemberService.FindMembersByEmail(user.Email.Trim(), 0, int.MaxValue, out totalRecs, StringPropertyMatchType.Exact);
var byEmail = MemberService.FindByEmail(user.Email.Trim(), 0, int.MaxValue, out totalRecs, StringPropertyMatchType.Exact);
if (byEmail.Count(x => x.Id != m.Id) > 0)
{
throw new ProviderException(string.Format("A member with the email '{0}' already exists", user.Email));
@@ -498,12 +498,12 @@ namespace Umbraco.Web.Security.Providers
if (member.IsApproved == false)
{
LogHelper.Info<UmbracoServiceMembershipProvider<T, TEntity>>("Cannot validate member " + username + " because they are not approved");
LogHelper.Info<UmbracoMembershipProvider<T, TEntity>>("Cannot validate member " + username + " because they are not approved");
return false;
}
if (member.IsLockedOut)
{
LogHelper.Info<UmbracoServiceMembershipProvider<T, TEntity>>("Cannot validate member " + username + " because they are currently locked out");
LogHelper.Info<UmbracoMembershipProvider<T, TEntity>>("Cannot validate member " + username + " because they are currently locked out");
return false;
}
@@ -521,7 +521,7 @@ namespace Umbraco.Web.Security.Providers
{
member.IsLockedOut = true;
member.LastLockoutDate = DateTime.Now;
LogHelper.Info<UmbracoServiceMembershipProvider<T, TEntity>>("Member " + username + " is now locked out, max invalid password attempts exceeded");
LogHelper.Info<UmbracoMembershipProvider<T, TEntity>>("Member " + username + " is now locked out, max invalid password attempts exceeded");
}
}
else
@@ -13,7 +13,7 @@ namespace Umbraco.Web.Security.Providers
/// <summary>
/// Custom Membership Provider for Umbraco Users (User authentication for Umbraco Backend CMS)
/// </summary>
public class UsersMembershipProvider : UmbracoServiceMembershipProvider<IMembershipUserService, IUser>, IUsersMembershipProvider
public class UsersMembershipProvider : UmbracoMembershipProvider<IMembershipUserService, IUser>, IUsersMembershipProvider
{
public UsersMembershipProvider()
+3 -3
View File
@@ -1,4 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="4.0">
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
<PropertyGroup>
@@ -112,7 +112,7 @@
</Reference>
<Reference Include="Examine">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\packages\Examine.0.1.53.2941\lib\Examine.dll</HintPath>
<HintPath>..\packages\Examine.0.1.55.2941\lib\Examine.dll</HintPath>
</Reference>
<Reference Include="HtmlAgilityPack, Version=1.4.6.0, Culture=neutral, PublicKeyToken=bd319b19eaf3b43a, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
@@ -548,7 +548,7 @@
<Compile Include="Editors\BackOfficeController.cs" />
<Compile Include="Security\Providers\MembersMembershipProvider.cs" />
<Compile Include="Security\Providers\MembersRoleProvider.cs" />
<Compile Include="Security\Providers\UmbracoServiceMembershipProvider.cs" />
<Compile Include="Security\Providers\UmbracoMembershipProvider.cs" />
<Compile Include="Security\Providers\UsersMembershipProvider.cs" />
<Compile Include="Trees\ContentTreeController.cs" />
<Compile Include="Trees\TreeRenderingEventArgs.cs" />
+17 -1
View File
@@ -1,4 +1,4 @@
<?xml version="1.0" encoding="utf-8" ?>
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<configSections>
<sectionGroup name="applicationSettings" type="System.Configuration.ApplicationSettingsGroup, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" >
@@ -25,4 +25,20 @@
</setting>
</Umbraco.Web.Properties.Settings>
</applicationSettings>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.0.0.0" newVersion="4.0.0.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Web.WebPages" publicKeyToken="31bf3856ad364e35" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-2.0.0.0" newVersion="2.0.0.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Web.Helpers" publicKeyToken="31bf3856ad364e35" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-2.0.0.0" newVersion="2.0.0.0" />
</dependentAssembly>
</assemblyBinding>
</runtime>
</configuration>
+1 -1
View File
@@ -3,7 +3,7 @@
<package id="AutoMapper" version="3.0.0" targetFramework="net45" />
<package id="ClientDependency" version="1.7.1.1" targetFramework="net45" />
<package id="CodeSharp.Package.AspNetWebPage" version="1.0" targetFramework="net40" />
<package id="Examine" version="0.1.53.2941" targetFramework="net40" />
<package id="Examine" version="0.1.55.2941" targetFramework="net40" />
<package id="HtmlAgilityPack" version="1.4.6" targetFramework="net40" />
<package id="Lucene.Net" version="2.9.4.1" targetFramework="net40" />
<package id="Microsoft.AspNet.Mvc" version="4.0.30506.0" targetFramework="net40" />
@@ -3,6 +3,7 @@ using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
@@ -10,6 +11,7 @@ using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
using Umbraco.Core.Configuration;
using umbraco.cms.businesslogic.propertytype;
using Umbraco.Core;
namespace umbraco.developer
{
@@ -35,7 +37,9 @@ namespace umbraco.developer
// generic properties
string existingGenProps = ",";
foreach (PropertyType pt in PropertyType.GetAll())
var exclude = Constants.Conventions.Member.GetStandardPropertyTypeStubs().Select(x => x.Key).ToArray();
foreach (PropertyType pt in PropertyType.GetAll().Where(x => exclude.Contains(x.Alias) == false))
{
if (!existingGenProps.Contains("," + pt.Alias + ","))
{
if(UmbracoConfig.For.UmbracoSettings().Content.UseLegacyXmlSchema)
@@ -45,6 +49,8 @@ namespace umbraco.developer
existingGenProps += pt.Alias + ",";
}
}
preValuesSource.Sort();
preValues.DataSource = preValuesSource;
@@ -57,24 +63,5 @@ namespace umbraco.developer
valueOf.Text = Request.QueryString["value"];
}
#region Web Form Designer generated code
override protected void OnInit(EventArgs e)
{
//
// CODEGEN: This call is required by the ASP.NET Web Form Designer.
//
InitializeComponent();
base.OnInit(e);
}
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
}
#endregion
}
}
@@ -3,12 +3,15 @@ using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
using Umbraco.Core.Configuration;
using Umbraco.Core;
using Umbraco.Core.Persistence.SqlSyntax;
using umbraco.DataLayer;
namespace umbraco.dialogs
@@ -56,7 +59,13 @@ namespace umbraco.dialogs
}
else
{
fieldSql = "select distinct alias from cmsPropertyType order by alias";
//exclude built-in memberhip properties from showing up here
var exclude = Constants.Conventions.Member.GetStandardPropertyTypeStubs()
.Select(x => SqlSyntaxContext.SqlSyntaxProvider.GetQuotedValue(x.Key)).ToArray();
fieldSql = string.Format(
"select distinct alias from cmsPropertyType where alias not in ({0}) order by alias",
string.Join(",", exclude));
pp_insertField.Text = ui.Text("templateEditor", "chooseField");
}
@@ -96,24 +105,6 @@ namespace umbraco.dialogs
}
#region Web Form Designer generated code
override protected void OnInit(EventArgs e)
{
//
// CODEGEN: This call is required by the ASP.NET Web Form Designer.
//
InitializeComponent();
base.OnInit(e);
}
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
}
#endregion
/// <summary>
/// JsInclude1 control.
@@ -80,14 +80,14 @@ namespace umbraco.cms.presentation.user
//if permissions are to be assigned, then assign them
if (permissions.Count > 0)
{
ApplicationContext.Current.Services.UserService.AssignUserPermissions(
ApplicationContext.Current.Services.UserService.ReplaceUserPermissions(
_user.Id, permissions.Select(x => x.Letter), allNodes.ToArray());
}
else
{
//If there are NO permissions for this node, we need to assign the ActionNull permission otherwise
//the node will inherit from it's parent.
ApplicationContext.Current.Services.UserService.AssignUserPermissions(
ApplicationContext.Current.Services.UserService.ReplaceUserPermissions(
_user.Id, new[] { ActionNull.Instance.Letter }, allNodes.ToArray());
}
@@ -42,7 +42,7 @@
</Reference>
<Reference Include="Examine">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\packages\Examine.0.1.53.2941\lib\Examine.dll</HintPath>
<HintPath>..\packages\Examine.0.1.55.2941\lib\Examine.dll</HintPath>
</Reference>
<Reference Include="Examine.Azure">
<SpecificVersion>False</SpecificVersion>
@@ -88,6 +88,7 @@
<Content Include="license.txt" />
</ItemGroup>
<ItemGroup>
<None Include="app.config" />
<None Include="packages.config" />
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
+15
View File
@@ -0,0 +1,15 @@
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.0.0.0" newVersion="4.0.0.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Web.WebPages" publicKeyToken="31bf3856ad364e35" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-2.0.0.0" newVersion="2.0.0.0" />
</dependentAssembly>
</assemblyBinding>
</runtime>
</configuration>
+1 -1
View File
@@ -2,7 +2,7 @@
<packages>
<package id="AnglicanGeek.WindowsAzure.ServiceRuntime" version="1.6" targetFramework="net40" />
<package id="AzureDirectory" version="1.0.5" targetFramework="net40" />
<package id="Examine" version="0.1.53.2941" targetFramework="net40" />
<package id="Examine" version="0.1.55.2941" targetFramework="net40" />
<package id="Examine.Azure" version="0.1.51.2941" targetFramework="net40" />
<package id="Lucene.Net" version="2.9.4.1" targetFramework="net40" />
<package id="SharpZipLib" version="0.86.0" targetFramework="net40" />
@@ -42,7 +42,7 @@
</Reference>
<Reference Include="Examine">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\packages\Examine.0.1.53.2941\lib\Examine.dll</HintPath>
<HintPath>..\packages\Examine.0.1.55.2941\lib\Examine.dll</HintPath>
</Reference>
<Reference Include="Examine.Azure">
<SpecificVersion>False</SpecificVersion>
@@ -89,6 +89,7 @@
</ProjectReference>
</ItemGroup>
<ItemGroup>
<None Include="app.config" />
<None Include="packages.config" />
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
+15
View File
@@ -0,0 +1,15 @@
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.0.0.0" newVersion="4.0.0.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Web.WebPages" publicKeyToken="31bf3856ad364e35" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-2.0.0.0" newVersion="2.0.0.0" />
</dependentAssembly>
</assemblyBinding>
</runtime>
</configuration>
+1 -1
View File
@@ -2,7 +2,7 @@
<packages>
<package id="AnglicanGeek.WindowsAzure.ServiceRuntime" version="1.6" targetFramework="net40" />
<package id="AzureDirectory" version="1.0.5" targetFramework="net40" />
<package id="Examine" version="0.1.53.2941" targetFramework="net40" />
<package id="Examine" version="0.1.55.2941" targetFramework="net40" />
<package id="Examine.Azure" version="0.1.51.2941" targetFramework="net40" />
<package id="Lucene.Net" version="2.9.4.1" targetFramework="net40" />
<package id="SharpZipLib" version="0.86.0" targetFramework="net40" />
@@ -48,7 +48,7 @@
<ItemGroup>
<Reference Include="Examine">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\packages\Examine.0.1.53.2941\lib\Examine.dll</HintPath>
<HintPath>..\packages\Examine.0.1.55.2941\lib\Examine.dll</HintPath>
</Reference>
<Reference Include="ICSharpCode.SharpZipLib">
<HintPath>..\packages\SharpZipLib.0.86.0\lib\20\ICSharpCode.SharpZipLib.dll</HintPath>
@@ -78,6 +78,7 @@
</ProjectReference>
</ItemGroup>
<ItemGroup>
<None Include="app.config" />
<None Include="packages.config" />
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
+15
View File
@@ -0,0 +1,15 @@
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.0.0.0" newVersion="4.0.0.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Web.WebPages" publicKeyToken="31bf3856ad364e35" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-2.0.0.0" newVersion="2.0.0.0" />
</dependentAssembly>
</assemblyBinding>
</runtime>
</configuration>
+1 -1
View File
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="Examine" version="0.1.53.2941" targetFramework="net40" />
<package id="Examine" version="0.1.55.2941" targetFramework="net40" />
<package id="iTextSharp" version="5.3.3" targetFramework="net40" />
<package id="Lucene.Net" version="2.9.4.1" targetFramework="net40" />
<package id="SharpZipLib" version="0.86.0" targetFramework="net40" />
+2 -1
View File
@@ -84,7 +84,7 @@
<ItemGroup>
<Reference Include="Examine">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\packages\Examine.0.1.53.2941\lib\Examine.dll</HintPath>
<HintPath>..\packages\Examine.0.1.55.2941\lib\Examine.dll</HintPath>
</Reference>
<Reference Include="ICSharpCode.SharpZipLib, Version=0.86.0.518, Culture=neutral, PublicKeyToken=1b03e6acf1164f73, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
@@ -171,6 +171,7 @@
</ProjectReference>
</ItemGroup>
<ItemGroup>
<None Include="app.config" />
<None Include="packages.config" />
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
+15
View File
@@ -0,0 +1,15 @@
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.0.0.0" newVersion="4.0.0.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Web.WebPages" publicKeyToken="31bf3856ad364e35" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-2.0.0.0" newVersion="2.0.0.0" />
</dependentAssembly>
</assemblyBinding>
</runtime>
</configuration>
+1 -1
View File
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="Examine" version="0.1.53.2941" targetFramework="net40" />
<package id="Examine" version="0.1.55.2941" targetFramework="net40" />
<package id="Lucene.Net" version="2.9.4.1" targetFramework="net40" />
<package id="SharpZipLib" version="0.86.0" targetFramework="net40" />
</packages>
@@ -683,8 +683,8 @@ namespace umbraco.MacroEngines
{
//if we cannot get with the current alias, try changing it's case
attempt = alias[0].IsUpperCase()
? getMember(alias.ToCleanString(CleanStringType.Ascii | CleanStringType.Alias | CleanStringType.CamelCase))
: getMember(alias.ToCleanString(CleanStringType.Ascii | CleanStringType.Alias | CleanStringType.PascalCase));
? getMember(alias.ToCleanString(CleanStringType.Ascii | CleanStringType.ConvertCase | CleanStringType.CamelCase))
: getMember(alias.ToCleanString(CleanStringType.Ascii | CleanStringType.ConvertCase | CleanStringType.PascalCase));
}
return attempt.Success ? attempt.Result : null;
+1 -1
View File
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="Examine" version="0.1.53.2941" targetFramework="net40" />
<package id="Examine" version="0.1.55.2941" targetFramework="net40" />
<package id="HtmlAgilityPack" version="1.4.6" targetFramework="net40" />
<package id="Lucene.Net" version="2.9.4.1" targetFramework="net40" />
<package id="Microsoft.AspNet.Mvc" version="4.0.30506.0" targetFramework="net40" />
@@ -47,7 +47,7 @@
<ItemGroup>
<Reference Include="Examine">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\packages\Examine.0.1.53.2941\lib\Examine.dll</HintPath>
<HintPath>..\packages\Examine.0.1.55.2941\lib\Examine.dll</HintPath>
</Reference>
<Reference Include="HtmlAgilityPack, Version=1.4.6.0, Culture=neutral, PublicKeyToken=bd319b19eaf3b43a, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
+5 -5
View File
@@ -341,7 +341,7 @@ namespace umbraco.BusinessLogic
public static User[] getAll()
{
int totalRecs;
var users = ApplicationContext.Current.Services.UserService.GetAllMembers(
var users = ApplicationContext.Current.Services.UserService.GetAll(
0, int.MaxValue, out totalRecs);
return users.Select(x => new User(x))
@@ -390,14 +390,14 @@ namespace umbraco.BusinessLogic
int totalRecs;
if (useExactMatch)
{
return ApplicationContext.Current.Services.UserService.FindMembersByEmail(
return ApplicationContext.Current.Services.UserService.FindByEmail(
email, 0, int.MaxValue, out totalRecs, StringPropertyMatchType.Exact)
.Select(x => new User(x))
.ToArray();
}
else
{
return ApplicationContext.Current.Services.UserService.FindMembersByEmail(
return ApplicationContext.Current.Services.UserService.FindByEmail(
string.Format("%{0}%", email), 0, int.MaxValue, out totalRecs, StringPropertyMatchType.Wildcard)
.Select(x => new User(x))
.ToArray();
@@ -430,14 +430,14 @@ namespace umbraco.BusinessLogic
int totalRecs;
if (partialMatch)
{
return ApplicationContext.Current.Services.UserService.FindMembersByUsername(
return ApplicationContext.Current.Services.UserService.FindByUsername(
string.Format("%{0}%", login), 0, int.MaxValue, out totalRecs, StringPropertyMatchType.Wildcard)
.Select(x => new User(x))
.ToArray();
}
else
{
return ApplicationContext.Current.Services.UserService.FindMembersByUsername(
return ApplicationContext.Current.Services.UserService.FindByUsername(
login, 0, int.MaxValue, out totalRecs, StringPropertyMatchType.Exact)
.Select(x => new User(x))
.ToArray();
+1 -1
View File
@@ -191,7 +191,7 @@ namespace umbraco.BusinessLogic
[MethodImpl(MethodImplOptions.Synchronized)]
public static void UpdateCruds(User user, CMSNode node, string permissions)
{
ApplicationContext.Current.Services.UserService.AssignUserPermissions(
ApplicationContext.Current.Services.UserService.ReplaceUserPermissions(
user.Id,
permissions.ToCharArray(),
node.Id);
@@ -114,7 +114,7 @@ namespace umbraco.cms.businesslogic.member
public static IEnumerable<Member> GetAllAsList()
{
int totalRecs;
return ApplicationContext.Current.Services.MemberService.GetAllMembers(0, int.MaxValue, out totalRecs)
return ApplicationContext.Current.Services.MemberService.GetAll(0, int.MaxValue, out totalRecs)
.Select(x => new Member(x))
.ToArray();
}
@@ -154,7 +154,7 @@ namespace umbraco.cms.businesslogic.member
public static Member[] getMemberFromFirstLetter(char letter)
{
int totalRecs;
return ApplicationContext.Current.Services.MemberService.FindMembersByUsername(
return ApplicationContext.Current.Services.MemberService.FindByUsername(
letter.ToString(CultureInfo.InvariantCulture), 0, int.MaxValue, out totalRecs, StringPropertyMatchType.StartsWith)
.Select(x => new Member(x))
.ToArray();
@@ -171,7 +171,7 @@ namespace umbraco.cms.businesslogic.member
}
else
{
var found = ApplicationContext.Current.Services.MemberService.FindMembersByUsername(
var found = ApplicationContext.Current.Services.MemberService.FindByUsername(
usernameToMatch, 0, int.MaxValue, out totalRecs, StringPropertyMatchType.StartsWith);
return found.Select(x => new Member(x)).ToArray();
}
@@ -291,7 +291,7 @@ namespace umbraco.cms.businesslogic.member
return null;
int totalRecs;
var found = ApplicationContext.Current.Services.MemberService.FindMembersByEmail(
var found = ApplicationContext.Current.Services.MemberService.FindByEmail(
email, 0, int.MaxValue, out totalRecs, StringPropertyMatchType.Exact);
return found.Select(x => new Member(x)).ToArray();
+19
View File
@@ -0,0 +1,19 @@
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.0.0.0" newVersion="4.0.0.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Web.WebPages" publicKeyToken="31bf3856ad364e35" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-2.0.0.0" newVersion="2.0.0.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Web.Helpers" publicKeyToken="31bf3856ad364e35" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-2.0.0.0" newVersion="2.0.0.0" />
</dependentAssembly>
</assemblyBinding>
</runtime>
</configuration>
@@ -1,4 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="4.0">
<PropertyGroup>
<ProjectType>Local</ProjectType>
@@ -483,6 +483,7 @@
<EmbeddedResource Include="SettingControls\js\Values.js" />
</ItemGroup>
<ItemGroup>
<None Include="app.config" />
<None Include="packages.config" />
</ItemGroup>
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
@@ -30,7 +30,7 @@ namespace umbraco.providers.members
/// Custom Membership Provider for Umbraco Members (User authentication for Frontend applications NOT umbraco CMS)
/// </summary>
[Obsolete("This has been superceded by Umbraco.Web.Security.Providers.MembersMembershipProvider")]
public class UmbracoMembershipProvider : UmbracoMembershipProviderBase, IUmbracoContentTypeMembershipProvider
public class UmbracoMembershipProvider : UmbracoMembershipProviderBase, IUmbracoMemberTypeMembershipProvider
{
public UmbracoMembershipProvider()
@@ -351,7 +351,7 @@ namespace umbraco.providers.members
/// </returns>
public override MembershipUserCollection FindUsersByEmail(string emailToMatch, int pageIndex, int pageSize, out int totalRecords)
{
var byEmail = ApplicationContext.Current.Services.MemberService.FindMembersByEmail(emailToMatch, pageIndex, pageSize, out totalRecords, StringPropertyMatchType.Wildcard).ToArray();
var byEmail = ApplicationContext.Current.Services.MemberService.FindByEmail(emailToMatch, pageIndex, pageSize, out totalRecords, StringPropertyMatchType.Wildcard).ToArray();
var collection = new MembershipUserCollection();
foreach (var m in byEmail)
@@ -373,7 +373,7 @@ namespace umbraco.providers.members
/// </returns>
public override MembershipUserCollection FindUsersByName(string usernameToMatch, int pageIndex, int pageSize, out int totalRecords)
{
var byEmail = ApplicationContext.Current.Services.MemberService.FindMembersByUsername(usernameToMatch, pageIndex, pageSize, out totalRecords, StringPropertyMatchType.Wildcard).ToArray();
var byEmail = ApplicationContext.Current.Services.MemberService.FindByUsername(usernameToMatch, pageIndex, pageSize, out totalRecords, StringPropertyMatchType.Wildcard).ToArray();
var collection = new MembershipUserCollection();
foreach (var m in byEmail)
@@ -396,7 +396,7 @@ namespace umbraco.providers.members
{
var membersList = new MembershipUserCollection();
var pagedMembers = ApplicationContext.Current.Services.MemberService.GetAllMembers(pageIndex, pageSize, out totalRecords);
var pagedMembers = ApplicationContext.Current.Services.MemberService.GetAll(pageIndex, pageSize, out totalRecords);
foreach (var m in pagedMembers)
{
@@ -413,7 +413,7 @@ namespace umbraco.providers.members
/// </returns>
public override int GetNumberOfUsersOnline()
{
return ApplicationContext.Current.Services.MemberService.GetMemberCount(MemberCountType.Online);
return ApplicationContext.Current.Services.MemberService.GetCount(MemberCountType.Online);
}
/// <summary>