using System.Threading.Tasks; using Abp.Authorization; using Abp.Dependency; using Abp.Runtime.Session; namespace Abp.Configuration { public class RequiresPermissionSettingClientVisibilityProvider : ISettingClientVisibilityProvider { private readonly IPermissionDependency _permissionDependency; public RequiresPermissionSettingClientVisibilityProvider(IPermissionDependency permissionDependency) { _permissionDependency = permissionDependency; } public async Task CheckVisible(IScopedIocResolver scope) { var abpSession = scope.Resolve(); if (!abpSession.UserId.HasValue) { return false; } var permissionDependencyContext = scope.Resolve(); permissionDependencyContext.User = abpSession.ToUserIdentifier(); return await _permissionDependency.IsSatisfiedAsync(permissionDependencyContext); } } }