Beispiel #1
0
 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);
     }
 }
Beispiel #2
0
        /// <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)));
        }