コード例 #1
0
        /// <summary>
        /// 按某个权限范围获取特定用户可访问的操作权限列表(有授权权限的权限列表)
        /// </summary>
        /// <param name="userInfo">用户</param>
        /// <param name="userId">用户主键</param>
        /// <param name="permissionItemCode">权限域编号</param>
        /// <returns>数据表</returns>
        public DataTable GetPermissionItemDTByPermissionScope(UserInfo userInfo, string userId, string permissionItemCode)
        {
            var dataTable = new DataTable(PiPermissionItemTable.TableName);
            var parameter = ParameterUtil.CreateWithMessage(userInfo, MethodBase.GetCurrentMethod(), this.serviceName, RDIFrameworkMessage.PermissionService_GetPermissionItemDTByPermissionScope);

            ServiceUtil.ProcessRDIReadDb(userInfo, parameter, dbProvider =>
            {
                var permissionItemManager = new PiPermissionItemManager(dbProvider, userInfo);
                var permissionItemId      = permissionItemManager.GetId(PiPermissionItemTable.FieldCode, permissionItemCode);
                // 数据库里没有设置可授权的权限项,系统自动增加一个权限配置项
                if (String.IsNullOrEmpty(permissionItemId) && permissionItemCode.Equals("Resource.ManagePermission"))
                {
                    var permissionItemEntity = new PiPermissionItemEntity
                    {
                        Code        = "Resource.ManagePermission",
                        FullName    = "资源管理范围权限(系统默认)",
                        IsScope     = 1,
                        Enabled     = 1,
                        AllowDelete = 0
                    };
                    permissionItemManager.AddEntity(permissionItemEntity);
                }
                dataTable           = permissionItemManager.GetDTByUser(userId, permissionItemCode);
                dataTable.TableName = PiPermissionItemTable.TableName;
            });
            return(dataTable);
        }
コード例 #2
0
        /// <summary>
        /// 用户角色关系是否有模块权限
        /// </summary>
        /// <param name="roleId">角色主键</param>
        /// <param name="permissionItemCode">权限编号</param>
        /// <returns>有角色权限</returns>
        public bool CheckPermissionByRole(string roleId, string permissionItemCode)
        {
            var permissionItemManager = new PiPermissionItemManager(DBProvider, UserInfo);
            var permissionItemId      = permissionItemManager.GetProperty(PiPermissionItemTable.FieldCode, permissionItemCode, PiPermissionItemTable.FieldId);

            // 判断当前判断的权限是否存在,否则很容易出现前台设置了权限,后台没此项权限
            // 需要自动的能把前台判断过的权限,都记录到后台来
            #if (DEBUG)
            if (String.IsNullOrEmpty(permissionItemId))
            {
                PiPermissionItemEntity permissionItemEntity = new PiPermissionItemEntity
                {
                    Code        = permissionItemCode,
                    FullName    = permissionItemCode,
                    ParentId    = "",
                    IsScope     = 0,
                    AllowDelete = 1,
                    AllowEdit   = 1,
                    DeleteMark  = 0,
                    Enabled     = 1
                };
                // 这里是防止主键重复?
                // permissionEntity.ID = BusinessLogic.NewGuid();
                permissionItemManager.AddEntity(permissionItemEntity);
            }
            else
            {
                // 更新最后一次访问日期,设置为当前服务器日期
                SQLBuilder sqlBuilder = new SQLBuilder(DBProvider);
                sqlBuilder.BeginUpdate(PiPermissionItemTable.TableName);
                sqlBuilder.SetDBNow(PiPermissionItemTable.FieldLastCall);
                sqlBuilder.SetWhere(PiPermissionItemTable.FieldId, permissionItemId);
                sqlBuilder.EndUpdate();
            }
            #endif

            if (string.IsNullOrEmpty(permissionItemId))
            {
                return(false);
            }
            var sqlQuery = " SELECT COUNT(*) "
                           + "   FROM " + PiPermissionTable.TableName
                           + "  WHERE " + "(" + PiPermissionTable.FieldResourceCategory + " = '" + PiRoleTable.TableName + "') "
                           + "        AND (" + PiPermissionTable.FieldEnabled + " = 1) "
                           + "        AND (" + PiPermissionTable.FieldResourceId + " = '" + roleId + "' ) "
                           + "        AND (" + PiPermissionTable.FieldPermissionId + " = '" + permissionItemId + "') ";
            var rowCount     = 0;
            var returnObject = DBProvider.ExecuteScalar(sqlQuery);
            if (returnObject != null)
            {
                rowCount = int.Parse(returnObject.ToString());
            }
            return(rowCount > 0);
        }