You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
I've defined a filter,
The first user to use the filter works, but subsequent users cannot implement dynamic data filtering.
It looks like the expression is fixed。
Is there any way to refresh an expression?
protected bool IsDataPermissionFilterEnabled => DataFilter?.IsEnabled<IDataPermission>() ?? false;
protected override Expression<Func<TEntity, bool>> CreateFilterExpression<TEntity>()
{
var expression = base.CreateFilterExpression<TEntity>();
if (typeof(IDataPermission).IsAssignableFrom(typeof(TEntity)))
{
var userName = CurrentUser.UserName;
Expression<Func<TEntity, bool>> dataFilterExp = e => false;
if (userName != null)
{
var filters = new List<string>();
var userFilter = $"\"Target\":\"{CurrentUser.UserName}\",\"TargetType\":\"U\"";
filters.Add(userFilter);
for (int i = 0; i < CurrentUser.Roles.Length; i++)
{
filters.Add($"\"Target\":\"{CurrentUser.Roles[i]}\",\"TargetType\":\"R\"");
}
dataFilterExp =
e => !IsDataPermissionFilterEnabled;
filters.ForEach(filter =>
{
Expression<Func<TEntity, bool>> dataExp =
e => EF.Property<string>(e, "DataPermissions").IndexOf(filter) > -1;
dataFilterExp = PredicateBuilder.Or(dataFilterExp, dataExp);
});
}
expression = expression == null
? dataFilterExp
: CombineExpressions(expression, dataFilterExp);
}
return expression;
}
The text was updated successfully, but these errors were encountered:
I've defined a filter,
The first user to use the filter works, but subsequent users cannot implement dynamic data filtering.
It looks like the expression is fixed。
Is there any way to refresh an expression?
The text was updated successfully, but these errors were encountered: