diff --git a/Cargo.lock b/Cargo.lock index 0fa745a..44aeb37 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -573,6 +573,7 @@ dependencies = [ "systemfd", "thiserror", "tokio", + "tower-http", "utils", ] @@ -6344,6 +6345,20 @@ dependencies = [ "tracing", ] +[[package]] +name = "tower-http" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8437150ab6bbc8c5f0f519e3d5ed4aa883a83dd4cdd3d1b21f9482936046cb97" +dependencies = [ + "bitflags 2.6.0", + "bytes", + "http", + "pin-project-lite", + "tower-layer", + "tower-service", +] + [[package]] name = "tower-layer" version = "0.3.3" diff --git a/README.md b/README.md index 3d2fd2f..9f124e6 100644 --- a/README.md +++ b/README.md @@ -75,7 +75,7 @@ Pour lancer l'application en mode développement, il est nécessaire d'exécuter ```bash # Lancement du serveur backend -systemfd --no-pid -s http::3030 -- cargo watch -x 'run --bin backend' +systemfd --no-pid -s http::8080 -- cargo watch -x 'run --bin backend' ``` ```bash diff --git a/crates/backend/Cargo.toml b/crates/backend/Cargo.toml index 0ceef47..554d858 100644 --- a/crates/backend/Cargo.toml +++ b/crates/backend/Cargo.toml @@ -21,6 +21,7 @@ thiserror.workspace = true entity = { path = "../../entity" } migration = { path = "../../migration" } utils = { path = "../utils" } +tower-http = { version = "0.6.1", features = ["cors"] } [dev-dependencies] cargo-watch = "8.5.2" diff --git a/crates/backend/README.md b/crates/backend/README.md index 97281a4..9799587 100644 --- a/crates/backend/README.md +++ b/crates/backend/README.md @@ -24,5 +24,5 @@ ln -s ../../.env .env Pour lancer le serveur en mode développement, exécutez la commande suivante : ```bash -systemfd --no-pid -s http::3030 -- cargo watch -x 'run --bin backend' +systemfd --no-pid -s http::8080 -- cargo watch -x 'run --bin backend' ``` diff --git a/crates/backend/src/lib.rs b/crates/backend/src/lib.rs index c9423b9..2ffaa8b 100644 --- a/crates/backend/src/lib.rs +++ b/crates/backend/src/lib.rs @@ -1,9 +1,10 @@ use anyhow::Error as AnyError; -use axum::http::{StatusCode, Uri}; +use axum::http::{header, StatusCode, Uri}; use axum::response::{IntoResponse, Response}; use axum::{routing::get, Router}; use sea_orm::{DatabaseConnection, DbErr}; use thiserror::Error; +use tower_http::cors::{Any, CorsLayer}; use ::utils::config::{load_config, ConfigError}; @@ -30,11 +31,17 @@ pub async fn get_router() -> Result { let db_connection = db::get_connection().await?; let state: AppState = AppState { db_connection }; + let cors = CorsLayer::new() + .allow_methods(Any) + .allow_origin(Any) + .allow_headers([header::CONTENT_TYPE]); + Ok(Router::new() .route("/", get(|| async { "Hello, world!" })) .merge(api::get_routes()) .fallback(fallback) - .with_state(state)) + .with_state(state) + .layer(cors)) } async fn fallback(uri: Uri) -> (StatusCode, String) { diff --git a/crates/backend/src/main.rs b/crates/backend/src/main.rs index 840e751..97c9b59 100644 --- a/crates/backend/src/main.rs +++ b/crates/backend/src/main.rs @@ -32,7 +32,7 @@ async fn main() -> Result<(), BackendError> { }; let local_addr = listener.local_addr()?; - println!("Listening on {}", local_addr); + println!("Listening on http://{}", local_addr); axum::serve(listener, app).await?; Ok(())