translations fixed to be safe

This commit is contained in:
Priec
2026-08-15 12:44:36 +02:00
parent 6ef2694fef
commit 794efac594
26 changed files with 746 additions and 418 deletions

View File

@@ -8,7 +8,7 @@ use axum::{
use crate::{
AppState,
{i18n::Locale, tr},
services::authenticated_request,
services::{authenticated_request, reject_cross_site},
};
use super::{
@@ -29,23 +29,13 @@ pub(crate) async fn create_logic(
headers: HeaderMap,
Form(form): Form<CreateLogicForm>,
) -> Response {
if let Some(rejection) = reject_cross_site(&headers) {
return rejection;
}
let submitted = form.clone();
if let Err(error) = load_page(state.clone(), &headers, submitted.clone(), None).await {
return render_loaded(&headers, Err(error));
}
if headers
.get("sec-fetch-site")
.is_some_and(|value| value == "cross-site")
{
return (
StatusCode::FORBIDDEN,
tr!(
Locale::from_headers(&headers),
"services-cross-site-rejected"
),
)
.into_response();
}
let request = match form.into_request(Locale::from_headers(&headers)) {
Ok(request) => request,
Err(message) => {
@@ -79,26 +69,21 @@ pub(crate) async fn create_logic(
}
fn render_loaded(headers: &HeaderMap, result: Result<super::state::AddLogicPageState, LoadError>) -> Response {
let locale = Locale::from_headers(headers);
match result {
Ok(page) => Html(ui::render_page(&page)).into_response(),
Err(LoadError::Unauthenticated) => Redirect::to("/login").into_response(),
Err(LoadError::Forbidden) => (
StatusCode::FORBIDDEN,
Html(ui::render_submission_error(
Locale::from_headers(&headers),
&tr!(
Locale::from_headers(&headers),
"add-logic-err-permission"
),
)),
)
.into_response(),
Err(LoadError::Forbidden) => {
let message = tr!(locale, "add-logic-err-permission");
(
StatusCode::FORBIDDEN,
Html(ui::render_submission_error(locale, &message)),
)
.into_response()
}
Err(LoadError::Backend(message)) => (
StatusCode::BAD_GATEWAY,
Html(ui::render_submission_error(
Locale::from_headers(&headers),
&message,
)),
Html(ui::render_submission_error(locale, &message)),
)
.into_response(),
}