private string GetShownName(PermissionGrantInfoDto permissionGrantInfo) { if (!IsDisabledPermission(permissionGrantInfo)) { return(permissionGrantInfo.DisplayName); } return(string.Format( "{0} ({1})", permissionGrantInfo.DisplayName, permissionGrantInfo.GrantedProviders .Where(p => p.ProviderName != _providerName) .Select(p => p.ProviderName) .JoinAsString(", ") )); }
private void SetPermissionGrant(PermissionGrantInfoDto permission, bool value) { if (permission.IsGranted == value) { return; } if (value) { _grantedPermissionCount++; _notGrantedPermissionCount--; } else { _grantedPermissionCount--; _notGrantedPermissionCount++; } permission.IsGranted = value; }
private void PermissionChanged(bool value, string groupName, PermissionGrantInfoDto permission) { permission.IsGranted = value; if (value == false) { var childPermissions = GetChildPermissions(groupName, permission); foreach (var permissionGrantInfoDto in childPermissions) { permissionGrantInfoDto.IsGranted = false; } } else if (permission.ParentName != null) { var parentPermission = GetParentPermission(groupName, permission); parentPermission.IsGranted = true; } }
private void PermissionChanged(bool value, PermissionGroupDto permissionGroup, PermissionGrantInfoDto permission) { SetPermissionGrant(permission, value); if (value && permission.ParentName != null) { var parentPermission = GetParentPermission(permissionGroup, permission); SetPermissionGrant(parentPermission, true); } else if (value == false) { var childPermissions = GetChildPermissions(permissionGroup, permission); foreach (var childPermission in childPermissions) { SetPermissionGrant(childPermission, false); } } }
private bool IsDisabledPermission(PermissionGrantInfoDto permissionGrantInfo) { return(_disabledPermissions.Any(x => x == permissionGrantInfo)); }
private List <PermissionGrantInfoDto> GetChildPermissions(PermissionGroupDto permissionGroup, PermissionGrantInfoDto permission) { return(permissionGroup.Permissions.Where(x => x.Name.StartsWith(permission.Name)).ToList()); }
private PermissionGrantInfoDto GetParentPermission(PermissionGroupDto permissionGroup, PermissionGrantInfoDto permission) { return(permissionGroup.Permissions.First(x => x.Name == permission.ParentName)); }
/// <summary> /// 获取权限 /// </summary> /// <param name="providerName"></param> /// <param name="providerKey"></param> /// <returns></returns> public async Task <PermissionListResult> GetAsync(string providerName, string providerKey) { await CheckProviderPolicy(providerName); var result = new PermissionListResult { //EntityDisplayName = providerKey, //Groups = new List<PermissionGroupDto>() }; //var multiTenancySide = CurrentTenant.GetMultiTenancySide(); foreach (var group in _permissionDefinitionManager.GetGroups()) { var groupDto = new PermissionGroupDto { Name = group.Name, DisplayName = group.DisplayName, Permissions = new List <PermissionGrantInfoDto>() }; foreach (var permission in group.GetPermissionsWithChildren()) { if (permission.Providers.Any() && !permission.Providers.Contains(providerName)) { continue; } //if (!permission.MultiTenancySide.HasFlag(multiTenancySide)) //{ // continue; //} var grantInfo = await _permissionManager.GetAsync(permission.Name, providerName, providerKey); var grantInfoDto = new PermissionGrantInfoDto { Name = permission.Name, DisplayName = permission.DisplayName, ParentName = permission.Parent?.Name, AllowedProviders = permission.Providers, IsGranted = grantInfo.IsGranted, GrantedProviders = new List <ProviderInfoDto>(), }; foreach (var provider in grantInfo.Providers) { grantInfoDto.GrantedProviders.Add(new ProviderInfoDto { ProviderName = provider.Name, ProviderKey = provider.Key, }); } groupDto.Permissions.Add(grantInfoDto); } if (groupDto.Permissions.Any()) { //result.Groups.Add(groupDto); } } return(result); }
private List <PermissionGrantInfoDto> GetChildPermissions(string groupName, PermissionGrantInfoDto permission) { return(_groups.First(x => x.Name == groupName).Permissions.Where(x => x.Name.StartsWith(permission.Name)).ToList()); }
private PermissionGrantInfoDto GetParentPermission(string groupName, PermissionGrantInfoDto permission) { return(_groups.First(x => x.Name == groupName).Permissions.First(x => x.Name == permission.ParentName)); }
public virtual async Task <GetPermissionListResultDto> GetAsync(string providerName, string providerKey) { await CheckProviderPolicy(providerName); var result = new GetPermissionListResultDto { EntityDisplayName = providerKey, Groups = new List <PermissionGroupDto>() }; var multiTenancySide = CurrentTenant.GetMultiTenancySide(); foreach (var group in PermissionDefinitionManager.GetGroups()) { var groupDto = new PermissionGroupDto { Name = group.Name, DisplayName = group.DisplayName.Localize(StringLocalizerFactory), Permissions = new List <PermissionGrantInfoDto>() }; foreach (var permission in group.GetPermissionsWithChildren()) { if (!permission.IsEnabled) { continue; } if (permission.Providers.Any() && !permission.Providers.Contains(providerName)) { continue; } if (!permission.MultiTenancySide.HasFlag(multiTenancySide)) { continue; } var grantInfoDto = new PermissionGrantInfoDto { Name = permission.Name, DisplayName = permission.DisplayName.Localize(StringLocalizerFactory), ParentName = permission.Parent?.Name, AllowedProviders = permission.Providers, GrantedProviders = new List <ProviderInfoDto>() }; var grantInfo = await PermissionManager.GetAsync(permission.Name, providerName, providerKey); grantInfoDto.IsGranted = grantInfo.IsGranted; foreach (var provider in grantInfo.Providers) { grantInfoDto.GrantedProviders.Add(new ProviderInfoDto { ProviderName = provider.Name, ProviderKey = provider.Key, }); } groupDto.Permissions.Add(grantInfoDto); } if (groupDto.Permissions.Any()) { result.Groups.Add(groupDto); } } return(result); }
public virtual async Task <GetPermissionListResultDto> GetAsync(string providerName, string providerKey) { var permissionListResult = new GetPermissionListResultDto { EntityDisplayName = providerKey, Groups = new List <PermissionGroupDto>() }; var multiTenancySide = CurrentTenant.GetMultiTenancySide(); var permissionGroups = PermissionDefinitionManager.GetGroups(); IEnumerable <PermissionGrant> permissions = await PermissionGrantRepository.GetListAsync(providerName, providerKey); // 如果是当前用户权限,还需要查询角色权限 if (providerName.Equals("U")) { var userId = CurrentUser.GetId().ToString(); if (providerKey.Equals(userId)) { foreach (var role in CurrentUser.Roles) { var rolePermissions = await PermissionGrantRepository .GetListAsync(RolePermissionValueProvider.ProviderName, role); permissions = permissions.Union(rolePermissions); } } } foreach (var permissionGroup in permissionGroups) { var groupDto = new PermissionGroupDto { Name = permissionGroup.Name, DisplayName = permissionGroup.DisplayName.Localize(StringLocalizerFactory), Permissions = new List <PermissionGrantInfoDto>() }; foreach (var permission in permissionGroup.GetPermissionsWithChildren()) { if (!permission.IsEnabled) { continue; } if (permission.Providers.Any() && !permission.Providers.Contains(providerName)) { continue; } if (!permission.MultiTenancySide.HasFlag(multiTenancySide)) { continue; } var grantInfoDto = new PermissionGrantInfoDto { Name = permission.Name, DisplayName = permission.DisplayName.Localize(StringLocalizerFactory), ParentName = permission.Parent?.Name, AllowedProviders = permission.Providers, GrantedProviders = new List <ProviderInfoDto>() }; var grantedPermissions = permissions.Where(p => p.Name.Equals(permission.Name)); foreach (var grantedPermission in grantedPermissions) { grantInfoDto.IsGranted = true; grantInfoDto.GrantedProviders.Add(new ProviderInfoDto { ProviderKey = grantedPermission.ProviderKey, ProviderName = grantedPermission.ProviderName }); } groupDto.Permissions.Add(grantInfoDto); } if (groupDto.Permissions.Any()) { permissionListResult.Groups.Add(groupDto); } } return(permissionListResult); }