Add cors config
This commit is contained in:
parent
cd18427d1b
commit
4676abf6a9
25
backend/Cargo.lock
generated
25
backend/Cargo.lock
generated
|
|
@ -604,6 +604,7 @@ dependencies = [
|
||||||
"serde_json",
|
"serde_json",
|
||||||
"sql-adaptor",
|
"sql-adaptor",
|
||||||
"tokio",
|
"tokio",
|
||||||
|
"tower-http",
|
||||||
"tracing",
|
"tracing",
|
||||||
"tracing-subscriber",
|
"tracing-subscriber",
|
||||||
]
|
]
|
||||||
|
|
@ -1080,6 +1081,12 @@ dependencies = [
|
||||||
"pin-project-lite",
|
"pin-project-lite",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "http-range-header"
|
||||||
|
version = "0.3.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "0bfe8eed0a9285ef776bb792479ea3834e8b94e13d615c2f66d03dd50a435a29"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "httparse"
|
name = "httparse"
|
||||||
version = "1.8.0"
|
version = "1.8.0"
|
||||||
|
|
@ -2642,6 +2649,24 @@ dependencies = [
|
||||||
"tracing",
|
"tracing",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "tower-http"
|
||||||
|
version = "0.4.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "5d1d42a9b3f3ec46ba828e8d376aec14592ea199f70a06a548587ecd1c4ab658"
|
||||||
|
dependencies = [
|
||||||
|
"bitflags",
|
||||||
|
"bytes",
|
||||||
|
"futures-core",
|
||||||
|
"futures-util",
|
||||||
|
"http",
|
||||||
|
"http-body",
|
||||||
|
"http-range-header",
|
||||||
|
"pin-project-lite",
|
||||||
|
"tower-layer",
|
||||||
|
"tower-service",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "tower-layer"
|
name = "tower-layer"
|
||||||
version = "0.3.2"
|
version = "0.3.2"
|
||||||
|
|
|
||||||
|
|
@ -21,3 +21,4 @@ tracing = "0.1.37"
|
||||||
tracing-subscriber = "0.3.17"
|
tracing-subscriber = "0.3.17"
|
||||||
chrono = "0.4.24"
|
chrono = "0.4.24"
|
||||||
bcrypt = "0.14.0"
|
bcrypt = "0.14.0"
|
||||||
|
tower-http = { version = "0.4.0", features = ["cors"] }
|
||||||
|
|
|
||||||
|
|
@ -1,24 +1,20 @@
|
||||||
use std::{net::SocketAddr, sync::Arc};
|
use std::{env, net::SocketAddr, sync::Arc};
|
||||||
|
|
||||||
use axum::{
|
use axum::{
|
||||||
extract,
|
extract,
|
||||||
|
http::{HeaderValue, Method},
|
||||||
routing::{get, patch, post},
|
routing::{get, patch, post},
|
||||||
Router, Server,
|
Router, Server,
|
||||||
};
|
};
|
||||||
use routes::*;
|
use routes::*;
|
||||||
use sql_adaptor::SqlAdaptor;
|
use sql_adaptor::SqlAdaptor;
|
||||||
use tokio::sync::Mutex;
|
use tokio::sync::Mutex;
|
||||||
|
use tower_http::cors::CorsLayer;
|
||||||
|
|
||||||
mod errors;
|
mod errors;
|
||||||
mod payloads;
|
mod payloads;
|
||||||
mod routes;
|
mod routes;
|
||||||
|
|
||||||
#[cfg(debug_assertions)]
|
|
||||||
const MODE: &str = "debug";
|
|
||||||
|
|
||||||
#[cfg(not(debug_assertions))]
|
|
||||||
const MODE: &str = "release";
|
|
||||||
|
|
||||||
pub struct ApiState<A> {
|
pub struct ApiState<A> {
|
||||||
adaptor: A,
|
adaptor: A,
|
||||||
}
|
}
|
||||||
|
|
@ -36,6 +32,18 @@ async fn main() {
|
||||||
adaptor: SqlAdaptor::new().await,
|
adaptor: SqlAdaptor::new().await,
|
||||||
}));
|
}));
|
||||||
|
|
||||||
|
let cors = CorsLayer::new()
|
||||||
|
.allow_methods([Method::GET, Method::POST, Method::PATCH])
|
||||||
|
.allow_origin(
|
||||||
|
if cfg!(debug_assertions) {
|
||||||
|
"http://localhost:1234".to_owned()
|
||||||
|
} else {
|
||||||
|
env::var("FRONTEND_URL").expect("Missing FRONTEND_URL environment variable")
|
||||||
|
}
|
||||||
|
.parse::<HeaderValue>()
|
||||||
|
.unwrap(),
|
||||||
|
);
|
||||||
|
|
||||||
let app = Router::new()
|
let app = Router::new()
|
||||||
.route("/", get(get_root))
|
.route("/", get(get_root))
|
||||||
.route("/stats", get(get_stats))
|
.route("/stats", get(get_stats))
|
||||||
|
|
@ -44,13 +52,19 @@ async fn main() {
|
||||||
.route("/event/:event_id/people", get(get_people))
|
.route("/event/:event_id/people", get(get_people))
|
||||||
.route("/event/:event_id/people/:person_name", get(get_person))
|
.route("/event/:event_id/people/:person_name", get(get_person))
|
||||||
.route("/event/:event_id/people/:person_name", patch(update_person))
|
.route("/event/:event_id/people/:person_name", patch(update_person))
|
||||||
.with_state(shared_state);
|
.with_state(shared_state)
|
||||||
|
.layer(cors);
|
||||||
|
|
||||||
let addr = SocketAddr::from(([127, 0, 0, 1], 3000));
|
let addr = SocketAddr::from(([127, 0, 0, 1], 3000));
|
||||||
|
|
||||||
println!(
|
println!(
|
||||||
"🦀 Crab Fit API listening at http://{} in {} mode",
|
"🦀 Crab Fit API listening at http://{} in {} mode",
|
||||||
addr, MODE
|
addr,
|
||||||
|
if cfg!(debug_assertions) {
|
||||||
|
"debug"
|
||||||
|
} else {
|
||||||
|
"release"
|
||||||
|
}
|
||||||
);
|
);
|
||||||
Server::bind(&addr)
|
Server::bind(&addr)
|
||||||
.serve(app.into_make_service())
|
.serve(app.into_make_service())
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue