Esempio n. 1
0
        /// <summary>
        /// 权限验证
        /// </summary>
        /// <param name="itemKey">权限项目标识</param>
        /// <param name="permissionScope">权限许可范围</param>
        /// <returns>通过验证返回true,否则返回false</returns>
        public bool Validate(string itemKey, PermissionScope permissionScope)
        {
            bool result = false;

            if (userPermissionSettings.ContainsKey(itemKey))
            {
                PermissionSetting permissionSetting = userPermissionSettings[itemKey];
                if (permissionSetting.PermissionType == PermissionType.Allow && (int)permissionSetting.PermissionScope >= (int)permissionScope)
                {
                    result = true;
                }
            }
            return(result);
        }
Esempio n. 2
0
        /// <summary>
        /// 合并权限规则
        /// </summary>
        /// <param name="permissionItem">权限项目</param>
        /// <param name="permissionType">权限许可类型</param>
        /// <param name="permissionScope">权限许可范围</param>
        /// <param name="permissionQuota">权限许可额度</param>
        internal void Merge(PermissionItem permissionItem, PermissionType permissionType, PermissionScope permissionScope, float permissionQuota)
        {
            if (userPermissionSettings.ContainsKey(permissionItem.ItemKey))
            {
                PermissionSetting permissionSetting = userPermissionSettings[permissionItem.ItemKey];

                if (permissionSetting.PermissionType == PermissionType.Refuse || permissionType == PermissionType.Refuse)
                {
                    permissionSetting.PermissionType = PermissionType.Refuse;
                }
                else if (permissionSetting.PermissionType == PermissionType.NotSet && permissionType == PermissionType.NotSet)
                {
                    permissionSetting.PermissionType = PermissionType.NotSet;
                }
                else
                {
                    permissionSetting.PermissionType = PermissionType.Allow;

                    if (permissionType == PermissionType.Allow)
                    {
                        if (permissionItem.EnableScope)
                        {
                            if ((int)permissionSetting.PermissionScope < (int)permissionScope)
                            {
                                permissionSetting.PermissionScope = permissionScope;
                            }
                        }
                        if (permissionItem.EnableQuota)
                        {
                            if (permissionSetting.PermissionQuota < permissionQuota)
                            {
                                permissionSetting.PermissionQuota = permissionQuota;
                            }
                        }
                    }
                }
                userPermissionSettings[permissionItem.ItemKey] = permissionSetting;
            }
            else
            {
                this.userPermissionSettings[permissionItem.ItemKey] = new PermissionSetting(permissionType, permissionScope, permissionQuota);
            }
        }