public async Task Invoke(HttpContext context)
        {
            try
            {
                await _requestDelegate(context);
            }
            catch (Exception ex)
            {
                var loggerService     = context.RequestServices.GetService <ILoggerServices>();
                var businessException = ex is BusinessException;

                var response = new ResponseSimple
                {
                    IsSuccess = false,
                    Message   = ex.Message
                };

                var options = new JsonSerializerOptions
                {
                    Encoder = System.Text.Encodings.Web.JavaScriptEncoder.Create(UnicodeRanges.All)
                };
                await context.Response.WriteAsync(JsonSerializer.Serialize(response, options));

                await loggerService.AddLoggerAsync(new LogDto
                {
                    Action           = context.Request.RouteValues["action"].ToString(),
                    Controller       = context.Request.RouteValues["controller"].ToString(),
                    ExceptionMessage = ex.Message,
                    Track            = ex.StackTrace,
                    LogLevelEnum     = businessException ? Domain.ValueObject.LogLevel.Error : Domain.ValueObject.LogLevel.Exception,
                    AddTime          = DateTime.Now.ToString(CultureInfo.CurrentCulture),
                    UserId           = 0
                });
            }
        }
Esempio n. 2
0
        //private readonly ILogger _logger = LoggerManager.CreateLogger(MethodBase.GetCurrentMethod().DeclaringType);

        /// <summary>
        /// An IResponseFormatter that performs some rudimentary unwrapping of known FailureContent structures to return only the error text.
        /// Once we get a little more control over return values on errors, this class can be a lot smarter.
        /// </summary>
        /// <remarks>In time, clients are meant to use their own implementation of IResponseFormatter with localization etc. instead of this</remarks>
        /// <param name="response"></param>
        /// <returns>Human readable parts of the response's FailureContent</returns>
        public string FormatResponse(ResponseSimple response)
        {
            if (response.IsSuccess)
            {
                return(string.Empty);
            }

            try
            {
                //ErrorResponse is for errors returned
                var errorResponse = response.FailureContent.TryParseJson <ErrorResponse>();
                //if (errorResponse?.Errors != null && errorResponse.Errors.Any())
                //{
                //    var formattedResponse = errorResponse.Errors.Select(FormatSingleFailure).Aggregate((cu, nx) => $"{cu}, {nx}");
                //    return formattedResponse;
                //}
            }
            catch (Exception e)
            {
                // Suppress exceptions - if we somehow fail formatting we just fallback to the raw value
                //_logger.LogWarning("FormatResponse failed", e);
            }

            //Fallback, just return it raw
            return(response.FailureContent);
        }
Esempio n. 3
0
        public async Task <IActionResult> CheckPasswordAsync(String param)
        {
            #region 参数验证
            Check.IfNullOrZero(param);
            #endregion

            var userContext = await GetUserContextAsync();

            var result = await _userServices.CheckPasswordAsync(userContext.Id, param);

            var response = new ResponseSimple();
            if (!result)
            {
                response.Model     = "y";
                response.IsSuccess = true;
                response.Message   = "";
            }
            else
            {
                response.Model     = "n";
                response.IsSuccess = false;
                response.Message   = "原始密码错误";
            }
            return(Json(response));
        }
Esempio n. 4
0
        public async Task <IActionResult> UnlockScreenAsync(String unlockPassword)
        {
            #region 参数验证
            Check.IfNullOrZero(unlockPassword);
            #endregion

            var userContext = await GetUserContextAsync();

            var response = new ResponseSimple();
            var result   = await _userServices.UnlockScreenAsync(userContext.Id, unlockPassword);

            if (result)
            {
                response.Message   = "屏幕解锁成功";
                response.IsSuccess = true;
            }

            return(Json(response));
        }
        public async Task <IActionResult> CheckRoleIdentityAsync(String param)
        {
            Check.IfNullOrZero(param);
            var result = await _securityServices.CheckRoleIdentityAsync(param);

            var response = new ResponseSimple();

            if (!result)
            {
                response.Model     = "y";
                response.IsSuccess = true;
                response.Message   = "";
            }
            else
            {
                response.Model     = "n";
                response.IsSuccess = false;
                response.Message   = "角色标识已存在";
            }
            return(Json(response));
        }
Esempio n. 6
0
        public async Task <IActionResult> ReadNotifyAsync(String notifyId)
        {
            #region 参数验证
            Check.IfNullOrZero(notifyId, true);
            #endregion

            var response = new ResponseSimple();

            if (String.IsNullOrEmpty(notifyId))
            {
                response.IsSuccess = false;
                response.Message   = "消息读取失败";
                return(Json(response));
            }

            await _deskServices.ReadNotify(notifyId.Split(new[] { "," }, StringSplitOptions.RemoveEmptyEntries).Select(Int32.Parse).ToList());

            response.IsSuccess = true;
            response.Message   = "消息读取成功";

            return(Json(response));
        }
        public async Task <IActionResult> AddAppToRoleAsync(IFormCollection forms)
        {
            #region 参数验证
            Check.IfNullOrZero(forms);
            #endregion

            var response = new ResponseSimple();
            var powerIds = forms["val_apps_id"].ToString().Split(new[] { ',' }, StringSplitOptions.RemoveEmptyEntries).Select(Int32.Parse).ToArray();
            if (powerIds.Any())
            {
                await _securityServices.AddPowerToCurrentRoleAsync(Int32.Parse(forms["val_roleId"]), powerIds);

                response.IsSuccess = true;
                response.Message   = "将权限附加到角色中成功";
            }
            else
            {
                response.Message = "一个角色至少拥有一个app";
            }

            return(Json(response));
        }
Esempio n. 8
0
        public async Task <IActionResult> CheckNameAsync(String param)
        {
            #region 参数验证
            Check.IfNullOrZero(param);
            #endregion

            var result = await _deskServices.CheckMemberNameAsync(param);

            var response = new ResponseSimple();
            if (!result)
            {
                response.Model     = "y";
                response.IsSuccess = true;
                response.Message   = "";
            }
            else
            {
                response.Model     = "n";
                response.IsSuccess = false;
                response.Message   = "应用名称已存在";
            }
            return(Json(response));
        }
Esempio n. 9
0
        public async System.Threading.Tasks.Task <ActionResult> UploadBikeImage(HttpPostedFileBase file)
        {
            DateTime dtNow = DateTime.Now;

            // 객체 초기화
            ResponseSimple rs      = new ResponseSimple();
            HKRheader      rHeader = new HKRheader();

            LOG newLog = new LOG(); // 로그 객체

            // DB Context 가져오기
            LOGDBDataContext logdb = new LOGDBDataContext(/**/);

            // Log 처리 루틴 -------------------------------------------------
            newLog.action     = "UploadBikeImage: ";// + fileName;
            newLog.auth_token = "";
            newLog.json       = "";
            newLog.dt_created = dtNow;
            // Log 처리 루틴 -------------------------------------------------

            try
            {
                long len = Request.InputStream.Length;
                AppendLog("Request.InputStream.Length: " + len);

                var streamContent = new StreamContent(Request.InputStream);
                AppendLog("A");
                streamContent.Headers.ContentType = MediaTypeHeaderValue.Parse(Request.ContentType);

                var provider = await streamContent.ReadAsMultipartAsync();

                AppendLog("provider.Contents: " + provider.Contents.Count);
                foreach (var httpContent in provider.Contents)
                {
                    var fileName = httpContent.Headers.ContentDisposition.FileName;
                    AppendLog(fileName + ": " + httpContent.Headers.ContentType + "," + httpContent.Headers.ContentLength);
                    if (string.IsNullOrWhiteSpace(fileName))
                    {
                        continue;
                    }

                    using (Stream fileContents = await httpContent.ReadAsStreamAsync())
                    {
                        var filePath = "D:\\Images\\" + fileName;
                        filePath = filePath.Replace("\"", "");
                        AppendLog("filePath: " + filePath);
                        if (System.IO.File.Exists(filePath))
                        {
                            System.IO.File.Delete(filePath);
                        }
                        using (var fileStream = new FileStream(filePath, FileMode.Create, FileAccess.Write))
                        {
                            fileContents.CopyTo(fileStream);
                        }
                    }
                }

                rs.header = rHeader;
                logdb.LOGs.InsertOnSubmit(newLog);

                return(Json(rs, JsonRequestBehavior.AllowGet));
            }
            catch (Exception ex)
            {
                AppendLog("Error: " + ex.Message);

                // Error: Exception
                rs.header = setHKRheader_Err(rHeader, 301, "[ERROR] Exception: " + ex.Message
                                             , "", logdb, newLog);
                return(Json(rs, JsonRequestBehavior.AllowGet));
            }
        }