public override async Task <MultiplePermissionGrantResult> CheckAsync(PermissionValuesCheckContext context) { var permissionNames = context.Permissions.Select(x => x.Name).ToArray(); var tenantId = context.Principal?.FindFirst(AbpClaimTypes.TenantId)?.Value; if (tenantId == null) { return(new MultiplePermissionGrantResult(permissionNames)); } return(await PermissionStore.IsGrantedAsync(permissionNames, Name, tenantId)); }
public override async Task <MultiplePermissionGrantResult> CheckAsync(PermissionValuesCheckContext context) { var permissionNames = context.Permissions.Select(x => x.Name).Distinct().ToArray(); Check.NotNullOrEmpty(permissionNames, nameof(permissionNames)); var userId = context.Principal?.FindFirst(AbpClaimTypes.UserId)?.Value; if (userId == null) { return(new MultiplePermissionGrantResult(permissionNames)); } return(await PermissionStore.IsGrantedAsync(permissionNames, Name, userId)); }
public override Task <MultiplePermissionGrantResult> CheckAsync(PermissionValuesCheckContext context) { var permissions = FileStoringManagementPermissions.GetAll(); var result = new MultiplePermissionGrantResult(); foreach (var permissionDefinition in context.Permissions) { if (permissions.Contains(permissionDefinition.Name)) { result.Result.Add(permissionDefinition.Name, PermissionGrantResult.Granted); } else { result.Result.Add(permissionDefinition.Name, PermissionGrantResult.Prohibited); } } return(Task.FromResult(result)); }
public override async Task <MultiplePermissionGrantResult> CheckAsync(PermissionValuesCheckContext context) { var permissionNames = context.Permissions.Select(x => x.Name).Distinct().ToList(); Check.NotNullOrEmpty(permissionNames, nameof(permissionNames)); var result = new MultiplePermissionGrantResult(permissionNames.ToArray()); var roles = context.Principal?.FindAll(AbpClaimTypes.Role).Select(c => c.Value).ToArray(); if (roles == null || !roles.Any()) { return(result); } foreach (var role in roles.Distinct()) { var multipleResult = await PermissionStore.IsGrantedAsync(permissionNames.ToArray(), Name, role); foreach (var grantResult in multipleResult.Result.Where(grantResult => result.Result.ContainsKey(grantResult.Key) && result.Result[grantResult.Key] == PermissionGrantResult.Undefined && grantResult.Value != PermissionGrantResult.Undefined)) { result.Result[grantResult.Key] = grantResult.Value; permissionNames.RemoveAll(x => x == grantResult.Key); } if (result.AllGranted || result.AllProhibited) { break; } if (permissionNames.IsNullOrEmpty()) { break; } } return(result); }
public abstract Task <MultiplePermissionGrantResult> CheckAsync(PermissionValuesCheckContext context);
public async Task <MultiplePermissionGrantResult> IsGrantedAsync(ClaimsPrincipal claimsPrincipal, string[] names) { Check.NotNull(names, nameof(names)); var multiTenancySide = claimsPrincipal?.GetMultiTenancySide() ?? CurrentTenant.GetMultiTenancySide(); var result = new MultiplePermissionGrantResult(); if (!names.Any()) { return(result); } var permissionDefinitions = new List <PermissionDefinition>(); foreach (var name in names) { var permission = PermissionDefinitionManager.Get(name); result.Result.Add(name, PermissionGrantResult.Undefined); if (permission.IsEnabled && await StateCheckerManager.IsEnabledAsync(permission) && permission.MultiTenancySide.HasFlag(multiTenancySide)) { permissionDefinitions.Add(permission); } } foreach (var provider in PermissionValueProviderManager.ValueProviders) { var permissions = permissionDefinitions .Where(x => !x.Providers.Any() || x.Providers.Contains(provider.Name)) .ToList(); if (permissions.IsNullOrEmpty()) { break; } var context = new PermissionValuesCheckContext( permissions, claimsPrincipal); var multipleResult = await provider.CheckAsync(context); foreach (var grantResult in multipleResult.Result.Where(grantResult => result.Result.ContainsKey(grantResult.Key) && result.Result[grantResult.Key] == PermissionGrantResult.Undefined && grantResult.Value != PermissionGrantResult.Undefined)) { result.Result[grantResult.Key] = grantResult.Value; permissionDefinitions.RemoveAll(x => x.Name == grantResult.Key); } if (result.AllGranted || result.AllProhibited) { break; } } return(result); }