/// <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); }
/// <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); }