Beispiel #1
0
        public async Task <HttpResponseMessage> SelectAll_DR([FromForm] WebApiParams param)
        {
            // Claimを取得する。
            string userName, roles, scopes, ipAddress;

            MyBaseAsyncApiController.GetClaims(out userName, out roles, out scopes, out ipAddress);

            // 引数クラスを生成
            // 下位(B・D層)は、テスト クラスを流用する
            TestParameterValue testParameterValue
                = new TestParameterValue(
                      "JsonController", "SelectAll_DR", "SelectAll_DR",
                      param.ddlDap + "%" + param.ddlMode1 + "%" + param.ddlMode2 + "%" + param.ddlExRollback,
                      new MyUserInfo(userName, ipAddress));

            // 非同期呼び出し
            AsyncRetVal asyncRetVal = await this.Call("testInProcess", testParameterValue);

            object ret = null;

            if (asyncRetVal.WsErrorInfo != null)
            {
                // ランタイムエラー
                ret = new { ExceptionMSG = asyncRetVal.WsErrorInfo };
            }
            else
            {
                TestReturnValue testReturnValue = (TestReturnValue)asyncRetVal.ReturnValue;

                if (testReturnValue.ErrorFlag == true)
                {
                    // 結果(業務続行可能なエラー)
                    asyncRetVal.WsErrorInfo = new Dictionary <string, string>();
                    asyncRetVal.WsErrorInfo["ErrorMessageID"] = testReturnValue.ErrorMessageID;
                    asyncRetVal.WsErrorInfo["ErrorMessage"]   = testReturnValue.ErrorMessage;
                    asyncRetVal.WsErrorInfo["ErrorInfo"]      = testReturnValue.ErrorInfo;

                    ret = new { ErrorMSG = asyncRetVal.WsErrorInfo };
                }
                else
                {
                    // 結果(正常系)
                    DataTable        dt  = (DataTable)testReturnValue.Obj;
                    DataToDictionary d2d = new DataToDictionary(
                        new Dictionary <string, string>
                    {
                        { "c1", "ShipperID" },
                        { "c2", "CompanyName" },
                        { "c3", "Phone" }
                    }, "", "");
                    ret = new { Message = "", Result = d2d.DataTableToDictionaryList(dt) };
                }
            }

            return(Request.CreateResponse(HttpStatusCode.OK, ret));
        }
        public async Task <ContentResult> SelectAll_DSQL([FromForm] WebApiParams param)
        {
            // Claimを取得する。
            string userName, roles, scopes, ipAddress;

            MyBaseAsyncApiController.GetClaims(out userName, out roles, out scopes, out ipAddress);

            // 引数クラスを生成
            // 下位(B・D層)は、テスト クラスを流用する
            TestParameterValue testParameterValue
                = new TestParameterValue(
                      "JsonController", "SelectAll_DSQL", "SelectAll_DSQL",
                      param.ddlDap + "%" + param.ddlMode1 + "%" + param.ddlMode2 + "%" + param.ddlExRollback,
                      new MyUserInfo(userName, ipAddress));

            testParameterValue.OrderColumn   = param.orderColumn;
            testParameterValue.OrderSequence = param.orderSequence;

            // 非同期呼び出し
            AsyncRetVal asyncRetVal = await this.Call("testInProcess", testParameterValue);

            object ret = null;

            if (asyncRetVal.WsErrorInfo != null)
            {
                // ランタイムエラー
                ret = new { ExceptionMSG = asyncRetVal.WsErrorInfo };
            }
            else
            {
                TestReturnValue testReturnValue = (TestReturnValue)asyncRetVal.ReturnValue;

                if (testReturnValue.ErrorFlag == true)
                {
                    // 結果(業務続行可能なエラー)
                    asyncRetVal.WsErrorInfo = new Dictionary <string, string>();
                    asyncRetVal.WsErrorInfo["ErrorMessageID"] = testReturnValue.ErrorMessageID;
                    asyncRetVal.WsErrorInfo["ErrorMessage"]   = testReturnValue.ErrorMessage;
                    asyncRetVal.WsErrorInfo["ErrorInfo"]      = testReturnValue.ErrorInfo;

                    ret = new { ErrorMSG = asyncRetVal.WsErrorInfo };
                }
                else
                {
                    // 結果(正常系)
                    DataTable        dt  = (DataTable)testReturnValue.Obj;
                    DataToDictionary d2d = new DataToDictionary(null, null, null);
                    ret = new { Message = "", Result = d2d.DataTableToDictionaryList(dt) };
                }
            }

            return(this.Content(JsonConvert.SerializeObject(ret, JSS)));
        }
Beispiel #3
0
        private Dictionary <string, IEnumerable <Dictionary <string, object> > > BuildQueryAndRun(
            IApp app,
            string name,
            string stream,
            bool includeGuid,
            IContextOfSite context,
            bool userMayEdit,
            AppQueryParameters more)
        {
            var wrapLog = Log.Call($"name:{name}, stream:{stream}, withModule:{(context as IContextOfBlock)?.Module.Id}");
            var query   = app.GetQuery(name);

            if (query == null)
            {
                var msg = $"query '{name}' not found";
                wrapLog(msg);
                throw new HttpExceptionAbstraction(HttpStatusCode.NotFound, msg, "query not found");
            }

            var permissionChecker = context.ServiceProvider.Build <AppPermissionCheck>()
                                    .ForItem(context, app, query.Definition.Entity, Log);
            var readExplicitlyAllowed = permissionChecker.UserMay(GrantSets.ReadSomething);

            var isAdmin = context.User.IsAdmin;

            // Only return query if permissions ok
            if (!(readExplicitlyAllowed || isAdmin))
            {
                var msg = $"Request not allowed. User does not have read permissions for query '{name}'";
                wrapLog(msg);
                throw new HttpExceptionAbstraction(HttpStatusCode.Unauthorized, msg, "Request not allowed");
            }

            var serializer = new DataToDictionary(userMayEdit)
            {
                WithGuid = includeGuid
            };

            if (stream == AllStreams)
            {
                stream = null;
            }
            var result = serializer.Convert(query, stream?.Split(','), more?.Guids);

            wrapLog(null);
            return(result);
        }
Beispiel #4
0
        BuildQueryAndRun(IApp app, string name, string stream, bool includeGuid, IInstanceContext context, ILog log,
                         bool userMayEdit)
        {
            var wrapLog = log.Call($"name:{name}, withModule:{context.Container.Id}");
            var query   = app.GetQuery(name);

            if (query == null)
            {
                var msg = $"query '{name}' not found";
                wrapLog(msg);
                throw new HttpExceptionAbstraction(HttpStatusCode.NotFound, msg, "query not found");
            }

            var permissionChecker = Factory.Resolve <AppPermissionCheck>().ForItem( // new DnnPermissionCheck().ForItem(
                context,                                                            // new DnnContext(new DnnTenant(), new DnnContainer().Init(module, log), new DnnUser()),
                appIdentity: app,
                targetItem: query.Definition.Entity, parentLog: log);
            var readExplicitlyAllowed = permissionChecker.UserMay(GrantSets.ReadSomething);

            var isAdmin = context.User.IsAdmin;

            //module != null && DotNetNuke.Security.Permissions
            //              .ModulePermissionController.CanAdminModule(module);

            // Only return query if permissions ok
            if (!(readExplicitlyAllowed || isAdmin))
            {
                var msg = $"Request not allowed. User does not have read permissions for query '{name}'";
                wrapLog(msg);
                throw new HttpExceptionAbstraction(HttpStatusCode.Unauthorized, msg, "Request not allowed");
            }

            var serializer = new DataToDictionary(userMayEdit)
            {
                WithGuid = includeGuid
            };
            var result = serializer.Convert(query, stream?.Split(','));

            wrapLog(null);
            return(result);
        }
        private static Dictionary <string, IEnumerable <Dictionary <string, object> > > BuildQueryAndRun(IApp app, string name, string stream, bool includeGuid, ModuleInfo module, ILog log, IBlockBuilder blockBuilder)
        {
            var wrapLog = log.Call($"name:{name}, withModule:{module?.ModuleID}");
            var query   = app.GetQuery(name);

            if (query == null)
            {
                var msg = $"query '{name}' not found";
                wrapLog(msg);
                throw HttpErr(HttpStatusCode.NotFound, "query not found", msg);
            }

            var permissionChecker = new DnnPermissionCheck(log, targetItem: query.Definition.Entity,
                                                           instance: new DnnContainer(module), appIdentity: app);
            var readExplicitlyAllowed = permissionChecker.UserMay(GrantSets.ReadSomething);

            var isAdmin = module != null && DotNetNuke.Security.Permissions
                          .ModulePermissionController.CanAdminModule(module);

            // Only return query if permissions ok
            if (!(readExplicitlyAllowed || isAdmin))
            {
                var msg = $"Request not allowed. User does not have read permissions for query '{name}'";
                wrapLog(msg);
                throw HttpErr(HttpStatusCode.Unauthorized, "Request not allowed", msg);
            }

            var serializer = new DataToDictionary(blockBuilder?.UserMayEdit ?? false)
            {
                WithGuid = includeGuid
            };
            var result = serializer.Convert(query, stream?.Split(','));

            wrapLog(null);
            return(result);
        }
        public async Task <ContentResult> SelectAll_DT([FromForm] WebApiParams param)
        {
            // Claimを取得する。
            string userName, roles, scopes, ipAddress;

            MyBaseAsyncApiController.GetClaims(out userName, out roles, out scopes, out ipAddress);

            // 引数クラスを生成
            // 下位(B・D層)は、テスト クラスを流用する
            TestParameterValue testParameterValue
                = new TestParameterValue(
                      "JsonController", "SelectAll_DT", "SelectAll_DT",
                      param.ddlDap + "%" + param.ddlMode1 + "%" + param.ddlMode2 + "%" + param.ddlExRollback,
                      new MyUserInfo(userName, ipAddress));

            // 非同期呼び出し
            AsyncRetVal asyncRetVal = await this.Call("testInProcess", testParameterValue);

            object ret = null;

            if (asyncRetVal.WsErrorInfo != null)
            {
                // ランタイムエラー
                ret = new { ExceptionMSG = asyncRetVal.WsErrorInfo };
            }
            else
            {
                TestReturnValue testReturnValue = (TestReturnValue)asyncRetVal.ReturnValue;

                if (testReturnValue.ErrorFlag == true)
                {
                    // 結果(業務続行可能なエラー)
                    asyncRetVal.WsErrorInfo = new Dictionary <string, string>();
                    asyncRetVal.WsErrorInfo["ErrorMessageID"] = testReturnValue.ErrorMessageID;
                    asyncRetVal.WsErrorInfo["ErrorMessage"]   = testReturnValue.ErrorMessage;
                    asyncRetVal.WsErrorInfo["ErrorInfo"]      = testReturnValue.ErrorInfo;

                    ret = new { ErrorMSG = asyncRetVal.WsErrorInfo };
                }
                else
                {
                    // 結果(正常系)
                    DataTable dt = (DataTable)testReturnValue.Obj;

                    // 一部、DataToDictionaryのテストコード
                    DataToDictionary d2d = null;
                    List <Dictionary <string, string> > list = null;

                    d2d = new DataToDictionary(
                        new Dictionary <string, string>()
                    {
                        { "ShipperID", "_ShipperID" },
                        { "CompanyName", "_CompanyName" },
                        { "Phone", "_Phone" }
                    },
                        null, null);
                    list = d2d.DataTableToDictionaryList(dt);
                    Debug.WriteLine(ObjectInspector.Inspect(list));

                    d2d  = new DataToDictionary(null, null, null);
                    list = d2d.DataTableToDictionaryList(dt);
                    Debug.WriteLine(ObjectInspector.Inspect(list));

                    ret = new { Message = "", Result = list };
                }
            }

            return(this.Content(JsonConvert.SerializeObject(ret, JSS)));
        }
 public OldDataToDictionaryWrapper(bool userMayEdit)
 {
     _converter = new DataToDictionary(userMayEdit);
 }