(
Extension(current_user): Extension<Option<User>>,
State(state): State<Arc<AppState>>,
req: Request<B>,
next: Next<B>,
)
| 110 | } |
| 111 | |
| 112 | pub async fn handle_error<B>( |
| 113 | Extension(current_user): Extension<Option<User>>, |
| 114 | State(state): State<Arc<AppState>>, |
| 115 | req: Request<B>, |
| 116 | next: Next<B>, |
| 117 | ) -> Result<Response, StatusCode> |
| 118 | where |
| 119 | B: Send + 'static, |
| 120 | { |
| 121 | let response = next.run(req).await; |
| 122 | |
| 123 | let status_code = response.status().as_u16(); |
| 124 | let status_text = response.status().as_str().to_string(); |
| 125 | |
| 126 | match status_code { |
| 127 | _ if status_code >= 400 => { |
| 128 | let mut context = Context::new(); |
| 129 | context.insert("status_code", &status_code); |
| 130 | context.insert("status_text", &status_text); |
| 131 | |
| 132 | let error = state.tera.render("views/error.html", &context).unwrap(); |
| 133 | |
| 134 | let mut context = Context::new(); |
| 135 | context.insert("view", &error); |
| 136 | context.insert("current_user", ¤t_user); |
| 137 | context.insert("with_footer", &true); |
| 138 | let rendered = state.tera.render("views/main.html", &context).unwrap(); |
| 139 | let h = Html(rendered).into_response(); |
| 140 | Ok(h) |
| 141 | } |
| 142 | _ => Ok(response), |
| 143 | } |
| 144 | } |
nothing calls this directly
no test coverage detected