private void CheckPermissions(DEOperationType opType, DESchemaDefine schemaInfo, string permissionName, params string[] containerIDs) { if (NeedCheckPermissionAndCurrentUserIsNotSupervisor && DeluxePrincipal.Current.HasPermissions(permissionName, containerIDs) == false) { throw DEAclPermissionCheckException.CreateException(opType, schemaInfo, permissionName); } }
/// <summary> /// 根据模式类型,查询ID类型和ID和时间点检索对象 /// </summary> /// <param name="schemaType">表示模式类型的字符串</param> /// <param name="idType">表示ID类型的<see cref="SnapshotQueryIDType"/>值之一</param> /// <param name="id">对象的ID</param> /// <param name="timePoint"></param> /// <returns></returns> public DESchemaObjectBase LoadByID(string schemaType, DESnapshotQueryIDType idType, string id, DateTime timePoint) { schemaType.CheckStringIsNullOrEmpty("schemaType"); id.CheckStringIsNullOrEmpty("id"); DESchemaDefine schema = DESchemaDefine.GetSchema(schemaType); var timeConditon = VersionStrategyQuerySqlBuilder.Instance.TimePointToBuilder(timePoint, "SN."); WhereSqlClauseBuilder whereBuilder = new WhereSqlClauseBuilder(); EnumItemDescriptionAttribute attr = EnumItemDescriptionAttribute.GetAttribute(idType); whereBuilder.AppendItem("SN." + attr.ShortName, id); string sql = string.Format("SELECT SO.* FROM DE.SchemaObject SO INNER JOIN {0} SN ON SO.ID = SN.ID WHERE {1}", schema.SnapshotTable, new ConnectiveSqlClauseCollection(whereBuilder, timeConditon).ToSqlString(TSqlBuilder.Instance)); DataTable table = DbHelper.RunSqlReturnDS(sql, this.GetConnectionName()).Tables[0]; DESchemaObjectBase result = null; if (table.Rows.Count > 0) { result = SchemaExtensions.CreateObject(schemaType); result.FromString((string)table.Rows[0]["Data"]); ORMapping.DataRowToObject(table.Rows[0], result); } return(result); }
/// <summary> /// /// </summary> /// <param name="opType"></param> /// <param name="permissionName"></param> public static DEAclPermissionCheckException CreateException(DEOperationType opType, DESchemaDefine schemaInfo, string permissionName) { string opDesp = EnumItemDescriptionAttribute.GetDescription(opType); DEAclPermissionItem permissionInfo = schemaInfo.PermissionSet[permissionName]; string permissionDesp = string.Empty; if (permissionInfo != null) { permissionDesp = permissionInfo.Description; if (permissionDesp.IsNullOrEmpty()) { permissionDesp = permissionInfo.Name; } } return(new DEAclPermissionCheckException(string.Format("不能执行\"{0}\"操作,您没有\"{0}\"权限", opDesp, permissionDesp))); }