/// <summary> /// 授予资源的权限 /// </summary> /// <param name="userInfo">用户</param> /// <param name="resourceCategory">资源分类</param> /// <param name="resourceId">资源主键</param> /// <param name="grantPermissionIds">权限主键</param> /// <returns>影响的行数</returns> public int GrantResourcePermission(BaseUserInfo userInfo, string resourceCategory, string resourceId, string[] grantPermissionIds) { var result = 0; var parameter = ServiceInfo.Create(userInfo, MethodBase.GetCurrentMethod()); ServiceUtil.ProcessUserCenterWriteDb(userInfo, parameter, (dbHelper) => { var manager = new BaseRoleScopeManager(dbHelper, userInfo); // 小心异常,检查一下参数的有效性 if (grantPermissionIds != null) { var permissionManager = new BasePermissionManager(dbHelper, userInfo); for (var i = 0; i < grantPermissionIds.Length; i++) { var resourcePermissionEntity = new BasePermissionEntity { ResourceCategory = resourceCategory, ResourceId = resourceId, PermissionId = grantPermissionIds[i], Enabled = 1, Deleted = 0 }; permissionManager.Add(resourcePermissionEntity); result++; } } }); return(result); }
// // 授予权限的实现部分 // #region private string Grant(BasePermissionManager permissionManager, string id, string userId, string permissionItemId) 为了提高授权的运行速度 /// <summary> /// 为了提高授权的运行速度 /// </summary> /// <param name="permissionManager">资源权限读写器</param> /// <param name="Id">主键</param> /// <param name="userId">用户主键</param> /// <param name="permissionItemId">权限主键</param> /// <returns>主键</returns> private string Grant(BasePermissionManager permissionManager, string id, string userId, string permissionItemId) { string returnValue = string.Empty; BasePermissionEntity resourcePermissionEntity = new BasePermissionEntity(); resourcePermissionEntity.ResourceCategory = BaseUserEntity.TableName; resourcePermissionEntity.ResourceId = userId; resourcePermissionEntity.PermissionId = int.Parse(permissionItemId); resourcePermissionEntity.Enabled = 1; return(permissionManager.Add(resourcePermissionEntity)); }
/// <summary> /// 授予资源的权限 /// </summary> /// <param name="userInfo">用户</param> /// <param name="resourceCategory">资源分类</param> /// <param name="resourceId">资源主键</param> /// <param name="grantPermissionItemIds">权限主键</param> /// <returns>影响的行数</returns> public int GrantResourcePermission(BaseUserInfo userInfo, string resourceCategory, string resourceId, string[] grantPermissionItemIds) { // 写入调试信息 #if (DEBUG) int milliStart = BaseBusinessLogic.StartDebug(userInfo, MethodBase.GetCurrentMethod()); #endif // 加强安全验证防止未授权匿名调用 #if (!DEBUG) LogOnService.UserIsLogOn(userInfo); #endif int returnValue = 0; using (IDbHelper dbHelper = DbHelperFactory.GetHelper(BaseSystemInfo.UserCenterDbType)) { try { dbHelper.Open(UserCenterDbConnection); BaseRoleScopeManager roleScopeManager = new BaseRoleScopeManager(dbHelper, userInfo); // 小心异常,检查一下参数的有效性 if (grantPermissionItemIds != null) { BasePermissionManager permissionManager = new BasePermissionManager(dbHelper, userInfo); for (int i = 0; i < grantPermissionItemIds.Length; i++) { BasePermissionEntity resourcePermissionEntity = new BasePermissionEntity(); resourcePermissionEntity.ResourceCategory = resourceCategory; resourcePermissionEntity.ResourceId = resourceId; resourcePermissionEntity.PermissionId = int.Parse(grantPermissionItemIds[i]); resourcePermissionEntity.Enabled = 1; resourcePermissionEntity.DeletionStateCode = 0; permissionManager.Add(resourcePermissionEntity); returnValue++; } } BaseLogManager.Instance.Add(dbHelper, userInfo, this.serviceName, AppMessage.PermissionService_GrantResourcePermission, MethodBase.GetCurrentMethod()); } catch (Exception ex) { BaseExceptionManager.LogException(dbHelper, userInfo, ex); throw ex; } finally { dbHelper.Close(); } } // 写入调试信息 #if (DEBUG) BaseBusinessLogic.EndDebug(MethodBase.GetCurrentMethod(), milliStart); #endif return(returnValue); }
// // 授予权限的实现部分 // #region private string Grant(BasePermissionManager permissionManager, string id, string organizeId, string permissionItemId) 为了提高授权的运行速度 /// <summary> /// 为了提高授权的运行速度 /// </summary> /// <param name="permissionManager">资源权限读写器</param> /// <param name="Id">主键</param> /// <param name="organizeId">组织机构主键</param> /// <param name="permissionItemId">权限主键</param> /// <returns>主键</returns> private string Grant(BasePermissionManager permissionManager, string organizeId, string permissionItemId) { string returnValue = string.Empty; BasePermissionEntity resourcePermission = new BasePermissionEntity(); resourcePermission.ResourceCategory = BaseOrganizeEntity.TableName; resourcePermission.ResourceId = organizeId; resourcePermission.PermissionId = int.Parse(permissionItemId); // 防止不允许为NULL的错误发生 resourcePermission.Enabled = 1; return(permissionManager.Add(resourcePermission)); }
// // 授予权限的实现部分 // #region public string Grant(string systemCode, string roleId, string permissionId, bool chekExists = true) 为了提高授权的运行速度 /// <summary> /// 为了提高授权的运行速度 /// </summary> /// <param name="systemCode">系统编号</param> /// <param name="roleId">角色主键</param> /// <param name="permissionId">权限主键</param> /// <returns>主键</returns> public string Grant(string systemCode, string roleId, string permissionId, bool chekExists = true) { string result = string.Empty; string currentId = string.Empty; this.CurrentTableName = systemCode + "Permission"; string tableName = systemCode + "Role"; // 判断是否已经存在这个权限,若已经存在就不重复增加了 if (chekExists) { List <KeyValuePair <string, object> > whereParameters = new List <KeyValuePair <string, object> >(); whereParameters.Add(new KeyValuePair <string, object>(BasePermissionEntity.FieldResourceCategory, tableName)); whereParameters.Add(new KeyValuePair <string, object>(BasePermissionEntity.FieldResourceId, roleId)); whereParameters.Add(new KeyValuePair <string, object>(BasePermissionEntity.FieldPermissionId, permissionId)); currentId = this.GetId(whereParameters); if (!string.IsNullOrEmpty(currentId)) { List <KeyValuePair <string, object> > parameters = new List <KeyValuePair <string, object> >(); parameters.Add(new KeyValuePair <string, object>(BasePermissionEntity.FieldEnabled, 1)); parameters.Add(new KeyValuePair <string, object>(BasePermissionEntity.FieldDeletionStateCode, 0)); parameters.Add(new KeyValuePair <string, object>(BasePermissionEntity.FieldModifiedUserId, this.UserInfo.Id)); parameters.Add(new KeyValuePair <string, object>(BasePermissionEntity.FieldModifiedBy, this.UserInfo.RealName)); parameters.Add(new KeyValuePair <string, object>(BasePermissionEntity.FieldModifiedOn, DateTime.Now)); // 更新状态,设置为有效、并取消删除标志,权限也不是天天变动的,所以可以更新一下 this.SetProperty(currentId, parameters); } } if (string.IsNullOrEmpty(currentId)) { BasePermissionEntity permissionEntity = new BasePermissionEntity(); permissionEntity.ResourceCategory = tableName; permissionEntity.ResourceId = roleId; permissionEntity.PermissionId = permissionId; // 防止不允许为NULL的错误发生 permissionEntity.Enabled = 1; permissionEntity.DeletionStateCode = 0; BasePermissionManager permissionManager = new BasePermissionManager(DbHelper, UserInfo, this.CurrentTableName); result = permissionManager.Add(permissionEntity); } // 2015-09-21 吉日嘎拉 这里增加变更日志 tableName = systemCode + ".Permission.Role"; SQLBuilder sqlBuilder = new SQLBuilder(this.DbHelper); sqlBuilder.BeginInsert(BaseModifyRecordEntity.TableName); sqlBuilder.SetValue(BaseModifyRecordEntity.FieldTableCode, tableName); if (DbHelper.CurrentDbType == CurrentDbType.Oracle) { sqlBuilder.SetFormula(BaseModifyRecordEntity.FieldId, "SEQ_" + BaseModifyRecordEntity.TableName + ".NEXTVAL"); } sqlBuilder.SetValue(BaseModifyRecordEntity.FieldRecordKey, roleId); sqlBuilder.SetValue(BaseModifyRecordEntity.FieldColumnCode, "授权"); sqlBuilder.SetValue(BaseModifyRecordEntity.FieldColumnDescription, BaseModuleManager.GetNameByCache(systemCode, permissionId)); sqlBuilder.SetValue(BaseModifyRecordEntity.FieldOldValue, null); sqlBuilder.SetValue(BaseModifyRecordEntity.FieldNewValue, permissionId); sqlBuilder.SetValue(BaseModifyRecordEntity.FieldCreateUserId, this.UserInfo.Id); sqlBuilder.SetValue(BaseModifyRecordEntity.FieldCreateBy, this.UserInfo.RealName); sqlBuilder.SetDBNow(BaseModifyRecordEntity.FieldCreateOn); sqlBuilder.SetValue(BaseModifyRecordEntity.FieldIPAddress, this.UserInfo.IPAddress); sqlBuilder.EndInsert(); return(result); }
/// <summary> /// 为了提高授权的运行速度 /// </summary> /// <param name="systemCode">系统编号</param> /// <param name="userId">用户主键</param> /// <param name="permissionId">权限主键</param> /// <param name="chekExists">判断是否存在</param> /// <returns>主键</returns> public string GrantUser(string systemCode, string userId, string permissionId, bool chekExists = true) { var result = string.Empty; if (!ValidateUtil.IsInt(userId) && string.IsNullOrEmpty(permissionId)) { return(result); } CurrentTableName = systemCode + "Permission"; var currentId = string.Empty; // 判断是否已经存在这个权限,若已经存在就不重复增加了 if (chekExists) { var whereParameters = new List <KeyValuePair <string, object> > { new KeyValuePair <string, object>(BasePermissionEntity.FieldResourceCategory, BaseUserEntity.CurrentTableName), new KeyValuePair <string, object>(BasePermissionEntity.FieldResourceId, userId), new KeyValuePair <string, object>(BasePermissionEntity.FieldPermissionId, permissionId) }; currentId = GetId(whereParameters); if (!string.IsNullOrEmpty(currentId)) { var parameters = new List <KeyValuePair <string, object> > { new KeyValuePair <string, object>(BasePermissionEntity.FieldEnabled, 1), new KeyValuePair <string, object>(BasePermissionEntity.FieldDeleted, 0), new KeyValuePair <string, object>(BasePermissionEntity.FieldUpdateUserId, UserInfo.UserId), new KeyValuePair <string, object>(BasePermissionEntity.FieldUpdateBy, UserInfo.RealName), new KeyValuePair <string, object>(BasePermissionEntity.FieldUpdateTime, DateTime.Now) }; // 更新状态,设置为有效、并取消删除,权限也不是天天变动的,所以可以更新一下 SetProperty(currentId, parameters); result = currentId; } } if (string.IsNullOrEmpty(currentId)) { var permissionEntity = new BasePermissionEntity { ResourceCategory = BaseUserEntity.CurrentTableName, ResourceId = userId.ToString(), PermissionId = permissionId, Enabled = 1 }; // 2015-07-03 吉日嘎拉 若是没有公司相关的信息,就把公司区分出来,每个公司可以看每个公司的数据 if (permissionEntity.CompanyId > 0) { var entity = BaseUserManager.GetEntityByCache(userId); if (entity != null) { permissionEntity.CompanyId = entity.CompanyId; permissionEntity.CompanyName = entity.CompanyName; } } var permissionManager = new BasePermissionManager(DbHelper, UserInfo, CurrentTableName); result = permissionManager.Add(permissionEntity, true, false); } // 2015-09-21 吉日嘎拉 这里增加变更日志 var tableName = systemCode + "UserPermission"; var sqlBuilder = new SqlBuilder(DbHelper); sqlBuilder.BeginInsert(BaseChangeLogEntity.CurrentTableName); sqlBuilder.SetValue(BaseChangeLogEntity.FieldTableName, tableName); if (DbHelper.CurrentDbType == CurrentDbType.Oracle) { sqlBuilder.SetFormula(BaseChangeLogEntity.FieldId, BaseChangeLogEntity.CurrentTableName + "_SEQ.NEXTVAL"); } sqlBuilder.SetValue(BaseChangeLogEntity.FieldRecordKey, userId); sqlBuilder.SetValue(BaseChangeLogEntity.FieldColumnName, "授权"); sqlBuilder.SetValue(BaseChangeLogEntity.FieldColumnDescription, new BaseModuleManager().GetNameByCache(systemCode, permissionId)); sqlBuilder.SetValue(BaseChangeLogEntity.FieldOldValue, null); sqlBuilder.SetValue(BaseChangeLogEntity.FieldNewValue, permissionId); sqlBuilder.EndInsert(); return(result); }
/// <summary> /// 为了提高授权的运行速度 /// </summary> /// <param name="systemCode">系统编号</param> /// <param name="roleId">角色主键</param> /// <param name="permissionId">权限主键</param> /// <param name="chekExists"></param> /// <returns>主键</returns> public string GrantRole(string systemCode, string roleId, string permissionId, bool chekExists = true) { var result = string.Empty; var currentId = string.Empty; CurrentTableName = systemCode + "Permission"; var tableName = systemCode + "Role"; // 判断是否已经存在这个权限,若已经存在就不重复增加了 if (chekExists) { var whereParameters = new List <KeyValuePair <string, object> > { new KeyValuePair <string, object>(BasePermissionEntity.FieldResourceCategory, tableName), new KeyValuePair <string, object>(BasePermissionEntity.FieldResourceId, roleId), new KeyValuePair <string, object>(BasePermissionEntity.FieldPermissionId, permissionId) }; currentId = GetId(whereParameters); if (!string.IsNullOrEmpty(currentId)) { var parameters = new List <KeyValuePair <string, object> > { new KeyValuePair <string, object>(BasePermissionEntity.FieldEnabled, 1), new KeyValuePair <string, object>(BasePermissionEntity.FieldDeleted, 0), }; // 更新状态,设置为有效、并取消删除,权限也不是天天变动的,所以可以更新一下 UpdateProperty(currentId, parameters); } } if (string.IsNullOrEmpty(currentId)) { var permissionEntity = new BasePermissionEntity { ResourceCategory = tableName, ResourceId = roleId, PermissionId = permissionId }; var permissionManager = new BasePermissionManager(DbHelper, UserInfo, CurrentTableName); result = permissionManager.Add(permissionEntity, true, false); } // 2015-09-21 吉日嘎拉 这里增加变更日志 tableName = systemCode + "RolePermission"; var sqlBuilder = new SqlBuilder(DbHelper); sqlBuilder.BeginInsert(BaseChangeLogEntity.CurrentTableName); sqlBuilder.SetValue(BaseChangeLogEntity.FieldTableName, tableName); if (DbHelper.CurrentDbType == CurrentDbType.Oracle) { sqlBuilder.SetFormula(BaseChangeLogEntity.FieldId, BaseChangeLogEntity.CurrentTableName + "_SEQ.NEXTVAL"); } sqlBuilder.SetValue(BaseChangeLogEntity.FieldRecordKey, roleId); sqlBuilder.SetValue(BaseChangeLogEntity.FieldColumnName, "授权"); sqlBuilder.SetValue(BaseChangeLogEntity.FieldColumnDescription, new BaseModuleManager().GetNameByCache(systemCode, permissionId)); sqlBuilder.SetValue(BaseChangeLogEntity.FieldOldValue, null); sqlBuilder.SetValue(BaseChangeLogEntity.FieldNewValue, permissionId); sqlBuilder.EndInsert(); return(result); }