public void Handle(Nancy.HttpStatusCode statusCode, Nancy.NancyContext context)
        {
            if (context.Request.Headers.Accept.Count() == 0)
            {
                return;
            }

            if (context.Request.Headers.Accept.First().Item1.Contains("/json") ||
                context.Request.Headers.Accept.First().Item1.Contains("/xml"))
            {
                return;
            }

            // this is most probably XmlHttpRequest
            if (context.Request.Method == "PATCH" ||
                context.Request.Method == "DELETE")
            {
                return;
            }

            if (context.Request.Method == "GET" ||
                context.Request.Method == "POST" ||
                context.Request.Headers.UserAgent.Contains("Mozilla") ||
                context.Request.Headers.UserAgent.Contains("WebKit") ||
                context.Request.Headers.UserAgent.Contains("Trident"))
            {
                var response = _renderer.RenderView(context, "Codes/" + (int)statusCode);
                response.StatusCode  = statusCode;
                response.ContentType = "text/html; charset=utf-8";
                context.Response     = response;
            }
        }
            public void Handle(HttpStatusCode statusCode, NancyContext context)
            {
                var response = _viewRenderer.RenderView(context, @"404.html");

                response.StatusCode = statusCode;
                context.Response    = response;
            }
Ejemplo n.º 3
0
        public void Handle(HttpStatusCode statusCode, NancyContext context)
        {
            var error = context.GetException();

            var resp = new ErrorResponse
            {
                Context     = context,
                ShowDetails = Debugger.IsAttached
            };

            switch (statusCode)
            {
            case HttpStatusCode.Unauthorized:
                context.Response = new RedirectResponse(RouteNames.GetLogin);
                break;

            case HttpStatusCode.Forbidden:
                resp.Title   = "Permissions";
                resp.Summary = "Sorry, you do not have permission to perform that action.";
                break;

            case HttpStatusCode.NotFound:
                resp.Title   = "404 Not Found";
                resp.Summary = "Sorry, the requested resource was not found.";
                break;

            case HttpStatusCode.InternalServerError:
                resp.Title   = "Sorry, something went wrong";
                resp.Summary = "An unexpected error occured.";
                resp.Details = error.Message;
                break;
            }
            context.Response.StatusCode = statusCode;
            context.Response            = _renderer.RenderView(context, "Modules/Application/Views/Error.cshtml", resp);
        }
Ejemplo n.º 4
0
 public void Handle(HttpStatusCode statusCode, NancyContext context)
 {
     if (statusCode == HttpStatusCode.Forbidden)
     {
         context.Response = _renderer.RenderView(context, "Error403");
     }
 }
Ejemplo n.º 5
0
        /// <summary>
        /// 具体处理过程
        /// </summary>
        /// <param name="statusCode"></param>
        /// <param name="context"></param>
        public void Handle(HttpStatusCode statusCode, NancyContext context)
        {
            var response = viewRenderer.RenderView(context, "Status/404", null); //指定专用的cshtml文件

            response.StatusCode = statusCode == HttpStatusCode.NotFound ? HttpStatusCode.OK : statusCode;
            context.Response    = response;
        }
Ejemplo n.º 6
0
 public void Handle(HttpStatusCode statusCode, NancyContext context)
 {
     if (statusCode == HttpStatusCode.Unauthorized && context.Request.Path == "/")
     {
         context.Response            = viewRenderer.RenderView(context, "login");
         context.Response.StatusCode = HttpStatusCode.Unauthorized;
     }
     else
     {
         context.Response = viewRenderer.RenderView(context, "error", new
         {
             statusCode = statusCode,
             message    = StatusCodeMessages.GetMessage(statusCode)
         });
         context.Response.StatusCode = statusCode;
     }
 }
Ejemplo n.º 7
0
        /// <summary>
        /// 具体
        /// </summary>
        /// <param name="statusCode"></param>
        /// <param name="context"></param>
        public void Handle(HttpStatusCode statusCode, NancyContext context)
        {
            Console.WriteLine(context.Trace.TraceLog.ToString());
            var response = viewRender.RenderView(context, "status/404");

            response.StatusCode = statusCode == HttpStatusCode.NotFound ? HttpStatusCode.OK : statusCode;
            context.Response    = response;
        }
Ejemplo n.º 8
0
        public void Handle(Nancy.HttpStatusCode statusCode, Nancy.NancyContext context)
        {
            var response = viewRenderer.RenderView(context, "Error", new ErrorViewModel {
                Code = (int)statusCode
            });

            response.StatusCode = statusCode;
            context.Response    = response;
        }
Ejemplo n.º 9
0
        public static Response AddUser(this INancyModule module, UserIdentity userIdentity, IUserRepository userRepository, IViewRenderer viewRenderer)
        {
            try
            {
                var allUsers = userRepository.GetAllUsers();
                if (allUsers.Any(user => string.Equals(user.UserName, userIdentity.UserName, StringComparison.OrdinalIgnoreCase)))
                {
                    module.Context.ViewBag.AuthenticationError = Constants.AdminUserAlreadyExistsError;
                    return(viewRenderer.RenderView(module.Context, AdminModule.AdminUserAddRoute));
                }

                userRepository.AddUser(userIdentity);
                module.Context.ViewBag.AuthenticationError = Constants.AdminUserAdded;
                return(module.Response.AsRedirect($"~/{AdminModule.AdminDashboardRoute}"));
            }
            catch (Exception e)
            {
                module.Context.ViewBag.AuthenticationError = e.Message;
                return(viewRenderer.RenderView(module.Context, AdminModule.AdminUserAddRoute));
            }
        }
Ejemplo n.º 10
0
 public void Handle(HttpStatusCode statusCode, NancyContext context)
 {
     try
     {
         var response = viewRenderer.RenderView(context, "index");
         response.StatusCode = statusCode;
         context.Response    = response;
     }
     catch (Exception)
     {
         context.Response.StatusCode = statusCode;
     }
 }
Ejemplo n.º 11
0
 public void Handle(HttpStatusCode statusCode, NancyContext context)
 {
     try
     {
         var response = viewRenderer.RenderView(context, "/Codes/" + (int)statusCode + ".cshtml");
         response.StatusCode = statusCode;
         context.Response    = response;
     }
     catch (Exception)
     {
         RemoveCode((int)statusCode);
         context.Response.StatusCode = statusCode;
     }
 }
Ejemplo n.º 12
0
 public void Handle(HttpStatusCode statusCode, NancyContext context)
 {
     try
     {
         var response = _viewRenderer.RenderView(context, (_checks.Any(x => x == (int)statusCode) ? (int)statusCode : 500) + ".cshtml", context.GetExceptionDetails());
         response.StatusCode = statusCode;
         context.Response    = response;
     }
     catch (Exception)
     {
         RemoveCode((int)statusCode);
         context.Response.StatusCode = statusCode;
     }
 }
        public void Handle(HttpStatusCode statusCode, NancyContext context)
        {
            Response response;

            switch (statusCode)
            {
            case HttpStatusCode.Forbidden:
                response = _viewRenderer.RenderView(context,
                                                    _errorPages.FirstOrDefault(x => x.Key == HttpStatusCode.Forbidden).Value);
                break;

            case HttpStatusCode.NotFound:
                response = _viewRenderer.RenderView(context,
                                                    _errorPages.FirstOrDefault(x => x.Key == HttpStatusCode.NotFound).Value);
                break;

            default:
                response = _viewRenderer.RenderView(context, _defaultError);
                break;
            }

            response.StatusCode = statusCode;
            context.Response    = response;
        }
        /// <summary>
        /// Handle the status code.
        /// </summary>
        /// <param name="statusCode">The status code to handle</param>
        /// <param name="context">The current context</param>
        public void Handle(HttpStatusCode statusCode, NancyContext context)
        {
            if (context.Response?.Contents != null && !ReferenceEquals(context.Response.Contents, Response.NoBody))
            {
                return;
            }
            if (!_checks.ContainsKey((int)statusCode))
            {
                return;
            }

            Exception ex;
            dynamic   result = new ExpandoObject();

            if (context.TryGetException(out ex))
            {
                result.Type       = context.GetException().GetType();
                result.Message    = _checks[(int)statusCode];
                result.StackTrace = context.GetExceptionDetails();
                result.Target     = $"{context.GetException().TargetSite.Module}.{context.GetException().TargetSite.Name}";
            }
            else
            {
                result.Type       = statusCode;
                result.Message    = _checks[(int)statusCode];
                result.StackTrace = "";
                result.Target     = "";
            }

            try
            {
                context.Response            = _responseNegotiator.NegotiateResponse(result, context);
                context.Response.StatusCode = statusCode;
                return;
            }
            catch (Exception)
            {
                // Move on to HTML view
            }
            // Wrap the exception in an HTML <pre> tag
            result.StackTrace = string.Concat("<pre>", context.GetExceptionDetails().Replace("<", "&gt;").Replace(">", "&lt;"), "</pre>");
            result.StatusCode = statusCode;
            var response = _viewRenderer.RenderView(context, "views/errors/" + (int)statusCode + ".html", result);

            response.StatusCode = statusCode;
            context.Response    = response;
        }
Ejemplo n.º 15
0
    public TheModule(IViewRenderer renderer)
    {
        _renderer = renderer;

        Post["/sendmail"] = _ => {
            string emailBody;
            var    model = this.Bind <MyEmailModel>();
            var    res   = _renderer.RenderView(this.Context, "email-template-view", model);
            using (var ms = new MemoryStream()) {
                res.Contents(ms);
                ms.Flush();
                ms.Position = 0;
                emailBody   = Encoding.UTF8.GetString(ms.ToArray());
            }
            //send the email...
        };
    }
Ejemplo n.º 16
0
        /// <summary>
        /// Handle
        /// </summary>
        /// <param name="statusCode"></param>
        /// <param name="context"></param>
        public void Handle(HttpStatusCode statusCode, NancyContext context)
        {
            var errorStatusCodeConfiguration = Checks
                                               .FirstOrDefault(x => x.HttpStatusCode == statusCode);

            context.Response.ContentType = "text/html";
            context.Response.StatusCode  = statusCode;
            var url = _defaultError;

            if (errorStatusCodeConfiguration != null)
            {
                url = errorStatusCodeConfiguration?.Url;
            }
            var response = _viewRenderer.RenderView(context, url);

            context.Response = response;
        }
Ejemplo n.º 17
0
        /// <summary>
        /// Handle the code that comes in and display the correct page.
        /// </summary>
        /// <param name="statusCode">The status code.</param>
        /// <param name="context">The <see cref="NancyContext"/> that the code rides on.</param>
        public void Handle(HttpStatusCode statusCode, NancyContext context)
        {
            try
            {
                var model = new ErrorModel
                {
                    ErrorCode = (int)statusCode,
                    Message   = context.ResolvedRoute.ToString()
                };

                var response = viewRenderer.RenderView(context, "/Codes/Error.html", model);
                response.StatusCode = statusCode;
                context.Response    = response;
            }
            catch (Exception)
            {
                RemoveCode((int)statusCode);
                context.Response.StatusCode = statusCode;
            }
        }
Ejemplo n.º 18
0
        public override Response Authenticate(
            INancyModule nancyModule,
            IUserMapper userMapper,
            IConfiguration configuration,
            IUserRepository userRepository,
            UserCredentials userCredentials,
            IViewRenderer viewRenderer,
            IModuleStaticWrappers moduleStaticWrappers)
        {
            var validUser = userRepository.Authenticate(userCredentials.User, userCredentials.Password);

            if (validUser == null)
            {
                nancyModule.Context.ViewBag.AuthenticationError = Constants.AuthenticationError;
                return(viewRenderer.RenderView(nancyModule.Context, AuthenticationRedirectUrl.Url));
            }

            var guid = userMapper.AddUser(userCredentials.User, validUser.FirstName, validUser.LastName, validUser.Claims);

            validUser.LastLogin = DateTime.UtcNow;
            userRepository.UpdateUser(validUser);
            return(moduleStaticWrappers.LoginAndRedirect(nancyModule, guid, null, ModuleStaticWrappers.DefaultFallbackRedirectUrl));
        }