Ejemplo n.º 1
0
        public override void OnActionExecuting(ActionExecutingContext context)
        {
            RoleLevelEnum?roleEnum;

            try
            {
                string roleLevel = GetClaimValue(context.HttpContext, "Role");
                roleEnum = Enum.Parse <RoleLevelEnum>(roleLevel);
            }
            catch
            {
                context.HttpContext.Response.StatusCode = ErrorCodes.Unauthorized.GetHashCode();;
                context.Result = new JsonResult(ExceptionPayload.New(new UnauthorizedException()));
                return;
            }
            var permissions = Roles.ToList().Contains(roleEnum.Value);

            if (!permissions)
            {
                context.HttpContext.Response.StatusCode = ErrorCodes.Forbidden.GetHashCode();
                context.Result = new JsonResult(ExceptionPayload.New(new ForbiddenException()));
                return;
            }

            base.OnActionExecuting(context);
        }
Ejemplo n.º 2
0
        protected IHttpActionResult HandleFailure <T>(T exceptionToHandle) where T : Exception
        {
            var exceptionPayload = ExceptionPayload.New(exceptionToHandle);

            return(exceptionToHandle is BusinessException?
                   Content(HttpStatusCode.BadRequest, exceptionPayload) :
                       Content(HttpStatusCode.InternalServerError, exceptionPayload));
        }
Ejemplo n.º 3
0
        /// <summary>
        /// Estrutura uma resposta http com a exceção disparada no <paramref name="context"/>
        /// </summary>
        /// <param name="context"></param>
        /// <returns></returns>
        public static HttpResponseMessage HandleExecutedContextException(this HttpActionExecutedContext context)
        {
            var exceptionPayload = ExceptionPayload.New(context.Exception);

            return(context.Exception is BusinessException?
                   context.Request.CreateResponse(HttpStatusCode.BadRequest, exceptionPayload) :
                       context.Request.CreateResponse(HttpStatusCode.InternalServerError, exceptionPayload));
        }
Ejemplo n.º 4
0
        /// <summary>
        /// Extension Method do HttpActionExecutedContext para manipular o context quando há uma exceção
        /// e retornar um ExceptionPayload customizado, informando ao client o que houve de errado.
        ///
        /// </summary>
        /// <param name="context">É o context atual da requisição</param>
        /// <returns>HttpResponseMessage contendo a exceção</returns>
        public static HttpResponseMessage HandleExecutedContextException(this HttpActionExecutedContext context)
        {
            // Retorna a resposta para o cliente com o erro 500 ou 400 e o ExceptionPayload (código de erro de negócio e message)
            var exceptionPayload = ExceptionPayload.New(context.Exception);

            return(context.Exception is BusinessException?
                   context.Request.CreateResponse(HttpStatusCode.BadRequest, exceptionPayload) :
                       context.Request.CreateResponse(HttpStatusCode.InternalServerError, exceptionPayload));
        }
        protected IActionResult HandleFailure <T>(T exceptionToHandle) where T : Exception
        {
            if (exceptionToHandle is ValidationException)
            {
                return(StatusCode(HttpStatusCode.BadRequest.GetHashCode(), (exceptionToHandle as ValidationException).Errors));
            }

            var exceptionPayload = ExceptionPayload.New(exceptionToHandle);

            return(exceptionToHandle is BusinessException?
                   StatusCode(exceptionPayload.ErrorCode.GetHashCode(), exceptionPayload) :
                       StatusCode(HttpStatusCode.InternalServerError.GetHashCode(), exceptionPayload));
        }
Ejemplo n.º 6
0
 public static HttpResponseMessage HandleExecutedContextException(this HttpActionExecutedContext context)
 {
     return(context.Request.CreateResponse(HttpStatusCode.InternalServerError, ExceptionPayload.New(context.Exception)));
 }
 public override void OnException(ExceptionContext context)
 {
     context.Exception = context.Exception;
     context.HttpContext.Response.StatusCode = 500;
     context.Result = new JsonResult(ExceptionPayload.New(context.Exception));
 }
Ejemplo n.º 8
0
 /// <summary>
 /// Extension Method do HttpActionExecutedContext para manipular o context quando há uma exceção
 /// e retornar um ExceptionPayload customizado, informando ao client o que houve de errado.
 ///
 /// </summary>
 /// <param name="context">É o contexto atual da requisição</param>
 /// <returns>HttpResponseMessage contendo a exceção</returns>
 public static HttpResponseMessage HandleExecutedContextException(this HttpActionExecutedContext context)
 {
     // Retorna a resposta para o cliente com o erro 500 e o ExceptionPayload (código de erro de negócio e mensagem)
     return(context.Request.CreateResponse(HttpStatusCode.InternalServerError, ExceptionPayload.New(context.Exception)));
 }