Browse Source

修改权限获取方式,使其从AbpConfiguration中获取

pull/1/head
cKey 6 years ago
parent
commit
9912a68d2e
  1. 24
      aspnet-core/modules/permissions/LINGYUN.Abp.PermissionManagement.Application/LINGYUN/Abp/PermissionManagement/PermissionAppService.cs
  2. 14
      vueJs/src/store/modules/permission.ts

24
aspnet-core/modules/permissions/LINGYUN.Abp.PermissionManagement.Application/LINGYUN/Abp/PermissionManagement/PermissionAppService.cs

@ -23,12 +23,10 @@ namespace LINGYUN.Abp.PermissionManagement
public class PermissionAppService : ApplicationService, IPermissionAppService
{
protected PermissionManagementOptions Options { get; }
protected ICurrentClient CurrentClient { get; }
protected IDistributedCache<PermissionGrantCacheItem> Cache { get; }
protected IPermissionGrantRepository PermissionGrantRepository { get; }
protected IPermissionDefinitionManager PermissionDefinitionManager { get; }
public PermissionAppService(
ICurrentClient currentClient,
IDistributedCache<PermissionGrantCacheItem> cache,
IPermissionGrantRepository permissionGrantRepository,
IPermissionDefinitionManager permissionDefinitionManager,
@ -36,7 +34,6 @@ namespace LINGYUN.Abp.PermissionManagement
{
Cache = cache;
Options = options.Value;
CurrentClient = currentClient;
PermissionGrantRepository = permissionGrantRepository;
PermissionDefinitionManager = permissionDefinitionManager;
}
@ -51,27 +48,6 @@ namespace LINGYUN.Abp.PermissionManagement
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);
}
}
}
if (!CurrentClient.Id.IsNullOrWhiteSpace())
{
var clientPermissions = await PermissionGrantRepository
.GetListAsync(ClientPermissionValueProvider.ProviderName, CurrentClient.Id);
permissions = permissions.Union(clientPermissions);
}
foreach (var permissionGroup in permissionGroups)
{
var groupDto = new PermissionGroupDto

14
vueJs/src/store/modules/permission.ts

@ -1,8 +1,8 @@
import { VuexModule, Module, Mutation, Action, getModule } from 'vuex-module-decorators'
import { RouteConfig } from 'vue-router'
import { asyncRoutes, constantRoutes } from '@/router'
import PermissionService, { PermissionGroup, IPermissionGrant } from '@/api/permission'
import store from '@/store'
import { AbpConfigurationModule } from '@/store/modules/abp'
const hasPermission = (roles: string[], route: RouteConfig) => {
if (route.meta && route.meta.roles) {
@ -50,15 +50,15 @@ class Permission extends VuexModule implements IPermissionState {
@Action
public async GetPermissions(userId: string) {
const permissions = await PermissionService.getPermissionsByKey('U', userId)
const authPermissions = new Array<string>()
permissions.groups.forEach((group: PermissionGroup) => {
group.permissions.forEach((permission: IPermissionGrant) => {
if (permission.isGranted) {
authPermissions.push(permission.name)
const grantedPolicies = AbpConfigurationModule.configuration.auth.grantedPolicies
if (grantedPolicies) {
Object.keys(grantedPolicies).forEach(key => {
if (grantedPolicies[key]) {
authPermissions.push(key)
}
})
})
}
if (authPermissions.length === 0) {
// 防止没有任何权限无限刷新页面
this.SET_AUTHPERMISSIONS(['guest'])

Loading…
Cancel
Save