コード例 #1
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="model"></param>
        public void UpNavigationMenusProvider(SysMenus model = null)
        {
            #region 更新全局模块列表(主要解决运行时模块列表没有更新的情况)
            _navigationManager.MainMenu.Items.Clear();
            _navigationMenusProvider.CreateMenuItemDefinition(_navigationManager.MainMenu);
            #endregion
            //新增,编辑 更新基础模块的同时添加新加的授权信息
            //删除 此处为null直接更新原有菜单信息
            if (model == null)
            {
                return;
            }
            #region  更新全局授权列表(主要解决运行时授权列表没有更新的情况)
            //添加授权模块
            Permission currentPermission = _permissionManager.GetPermissionOrNull(model.PermissionName.ToLower());
            if (currentPermission == null)
            {
                IReadOnlyList <Permission> permissionList = _permissionManager.GetAllPermissions();
                currentPermission = permissionList[0].CreateChildPermission(model.PermissionName.ToLower(), model.MenuDisplayName.ToLocalizable());
            }
            //添加授权动作
            foreach (var action in model.SysMenuActions)
            {
                if (!string.IsNullOrEmpty(action.PermissionName) && _permissionManager.GetPermissionOrNull(action.PermissionName.ToLower()) == null)
                {
                    currentPermission.CreateChildPermission(action.PermissionName.ToLower(), action.ActionDisplayName.ToLocalizable());
                }
            }

            #endregion
        }
コード例 #2
0
        /// <summary>
        /// Gets all permissions by names.
        /// Throws <see cref="AbpValidationException"/> if can not find any of the permission names.
        /// </summary>
        public static IEnumerable <Abp.Authorization.Permission> GetPermissionsFromNamesByValidating(this IPermissionManager permissionManager, IEnumerable <string> permissionNames)
        {
            var permissions = new List <Abp.Authorization.Permission>();
            var undefinedPermissionNames = new List <string>();

            foreach (var permissionName in permissionNames)
            {
                var permission = permissionManager.GetPermissionOrNull(permissionName);
                if (permission == null)
                {
                    undefinedPermissionNames.Add(permissionName);
                }

                permissions.Add(permission);
            }

            if (undefinedPermissionNames.Count > 0)
            {
                throw new AbpValidationException(string.Format("There are {0} undefined permission names.", undefinedPermissionNames.Count))
                      {
                          ValidationErrors = undefinedPermissionNames.ConvertAll(permissionName => new ValidationResult("Undefined permission: " + permissionName))
                      };
            }

            return(permissions);
        }
コード例 #3
0
        /// <summary>
        /// Gets all permissions by names.
        /// Throws <see cref="AbpValidationException"/> if can not find any of the permission names.
        /// </summary>
        public static IEnumerable <Permission> GetPermissionsFromNamesByValidating(this IPermissionManager permissionManager, IEnumerable <string> permissionNames)
        {
            var permissions = new List <Permission>();
            var undefinedPermissionNames = new List <string>();

            foreach (var permissionName in permissionNames)
            {
                var permission = permissionManager.GetPermissionOrNull(permissionName);
                if (permission == null)
                {
                    undefinedPermissionNames.Add(permissionName);
                }

                permissions.Add(permission);
            }

            if (undefinedPermissionNames.Count > 0)
            {
                throw new AbpValidationException($"There are {undefinedPermissionNames.Count} undefined permission names.")
                      {
                          ValidationErrors = undefinedPermissionNames.Select(permissionName => new ValidationResult("Undefined permission: " + permissionName)).ToList()
                      };
            }

            return(permissions);
        }
コード例 #4
0
        /// <summary>
        /// 根据名称获取所有权限
        /// Throws <see cref="AbpValidationException"/> 没有找到任何权限时
        /// </summary>
        public static IEnumerable <Permission> GetPermissionsFromNamesByValidating(this IPermissionManager permissionManager, IEnumerable <string> permissionNames)
        {
            var permissions = new List <Permission>();
            var undefinedPermissionNames = new List <string>();

            foreach (var permissionName in permissionNames)
            {
                var permission = permissionManager.GetPermissionOrNull(permissionName);
                if (permission == null)
                {
                    undefinedPermissionNames.Add(permissionName);
                }

                permissions.Add(permission);
            }

            if (undefinedPermissionNames.Count <= 0)
            {
                return(permissions);
            }

            var localizationManager = IocManager.Instance.Resolve <ILocalizationManager>();

            throw new AbpValidationException(string.Format(L(localizationManager, "Permission.Undefined"), undefinedPermissionNames.Count))
                  {
                      ValidationErrors = undefinedPermissionNames.Select(permissionName =>
                                                                         new ValidationResult(string.Format(
                                                                                                  L(localizationManager, "Permission.UndefinedName"), permissionName))).ToList()
                  };
        }
コード例 #5
0
        /// <summary>
        /// Gets all permissions by names.
        /// Throws <see cref="AbpValidationException"/> if can not find any of the permission names.
        /// </summary>
        public static IEnumerable <Permission> GetPermissionsFromNamesByValidating(this IPermissionManager permissionManager, IEnumerable <string> permissionNames)
        {
            var permissions = new List <Permission>();
            var undefinedPermissionNames = new List <string>();

            foreach (var permissionName in permissionNames)
            {
                var permission = permissionManager.GetPermissionOrNull(permissionName);
                if (permission == null)
                {
                    undefinedPermissionNames.Add(permissionName);
                }

                permissions.Add(permission);
            }

            if (undefinedPermissionNames.Count > 0)
            {
                throw new AbpValidationException(
                          $"有 {undefinedPermissionNames.Count} 个 权限没有定义")
                      {
                          ValidationErrors = undefinedPermissionNames.ConvertAll(permissionName => new ValidationResult("未定义的权限: " + permissionName))
                      };
            }

            return(permissions);
        }
コード例 #6
0
        private Permission GetPermission(string permissionName)
        {
            var permission = _permissionManager.GetPermissionOrNull(permissionName);

            if (permission == null)
            {
                throw new AbpException("There is no permission with name: " + permissionName);
            }

            return(permission);
        }
コード例 #7
0
        private async Task <bool> HasPermissionInternalAsync(TRole role, string permissionName) //TODO: Async
        {
            var permission = _permissionManager.GetPermissionOrNull(permissionName);

            if (permission == null)
            {
                throw new AbpException("There is no permission with name: " + permissionName);
            }

            return(await HasPermissionInternalAsync(role, permission));
        }
コード例 #8
0
        private bool HasPermissionInternal(AbpRole role, string permissionName) //TODO: Async
        {
            if (!(Store is IRolePermissionStore))
            {
                throw new AbpException("Store is not IRolePermissionStore");
            }

            var permission = _permissionManager.GetPermissionOrNull(permissionName);

            if (permission == null)
            {
                throw new AbpException("There is no permission with name: " + permissionName);
            }

            var permissionStore = Store as IRolePermissionStore;

            return(permission.IsGrantedByDefault
                ? !permissionStore.HasPermissionAsync(role, new PermissionGrantInfo(permissionName, false)).Result
                : permissionStore.HasPermissionAsync(role, new PermissionGrantInfo(permissionName, true)).Result);
        }
コード例 #9
0
        public static IEnumerable <Permission> GetPermissionsFromNamesByValidating(this IPermissionManager permissionManager, IEnumerable <string> permissionNames)
        {
            List <Permission> permissions = new List <Permission>();
            List <string>     strs        = new List <string>();

            foreach (string str in permissionNames)
            {
                Permission permissionOrNull = permissionManager.GetPermissionOrNull(str);
                if (permissionOrNull == null)
                {
                    strs.Add(str);
                }
                permissions.Add(permissionOrNull);
            }
            if (strs.Count > 0)
            {
                throw new AbpValidationException(string.Format("There are {0} undefined permission names.", strs.Count))
                      {
                          ValidationErrors = strs.ConvertAll <ValidationResult>((string permissionName) => new ValidationResult(string.Concat("Undefined permission: ", permissionName)))
                      };
            }
            return(permissions);
        }