/// <summary> /// A security filter for a single user entity /// </summary> /// <param name="user"> The user attempting to perform the operation </param> /// <param name="groups"> The groups the user belongs to </param> /// <param name="discriminator"> The user model discriminator </param> /// <param name="operation"> The database operation the user is trying to perform </param> /// <param name="serviceProvider">Service provider to pass to the ACLs</param> /// <typeparam name="TModel"> The user model trying to be accessed </typeparam> /// <returns> An expression that can be used for the where condition of a linq query </returns> private static Expression <Func <User, bool> > UserFilter <TModel>( User user, IList <string> groups, string discriminator, DATABASE_OPERATION operation, IServiceProvider serviceProvider) where TModel : class, IOwnerAbstractModel, new() { return(ExpressionHelper.AndExpressions( new List <Expression <Func <User, bool> > > { SecurityService.GetAggregatedUserModelAcls <TModel>(user, groups, operation, serviceProvider), u => u.Discriminator == discriminator } )); }