diff --git a/Cargo.lock b/Cargo.lock index 5dbf739..b6a7a09 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -9,6 +9,15 @@ dependencies = [ "memchr", ] +[[package]] +name = "aho-corasick" +version = "0.7.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "743ad5a418686aad3b87fd14c43badd828cf26e214a00f92a384291cf22e1811" +dependencies = [ + "memchr", +] + [[package]] name = "atty" version = "0.2.14" @@ -220,7 +229,7 @@ version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "400b347fe65ccfbd8f545c9d9a75d04b0caf23fec49aaa838a9a05398f94c019" dependencies = [ - "regex", + "regex 0.2.11", ] [[package]] @@ -337,7 +346,7 @@ dependencies = [ "time", "traitobject", "typeable", - "unicase", + "unicase 1.4.2", "url", ] @@ -819,13 +828,25 @@ version = "0.2.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9329abc99e39129fcceabd24cf5d85b4671ef7c29c50e972bc5afe32438ec384" dependencies = [ - "aho-corasick", + "aho-corasick 0.6.10", "memchr", - "regex-syntax", - "thread_local", + "regex-syntax 0.5.6", + "thread_local 0.3.6", "utf8-ranges", ] +[[package]] +name = "regex" +version = "1.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "322cf97724bea3ee221b78fe25ac9c46114ebb51747ad5babd51a2fc6a8235a8" +dependencies = [ + "aho-corasick 0.7.8", + "memchr", + "regex-syntax 0.6.14", + "thread_local 1.0.1", +] + [[package]] name = "regex-syntax" version = "0.5.6" @@ -835,6 +856,12 @@ dependencies = [ "ucd-util", ] +[[package]] +name = "regex-syntax" +version = "0.6.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b28dfe3fe9badec5dbf0a79a9cccad2cfc2ab5484bdb3e44cbd1ae8b3ba2be06" + [[package]] name = "ring" version = "0.13.5" @@ -910,6 +937,22 @@ dependencies = [ "yansi 0.5.0", ] +[[package]] +name = "rocket_cors" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "270a960cba5a0b7928ad74268db7773ce932da6b550478383cefebe9f46c4e13" +dependencies = [ + "log 0.3.9", + "regex 1.3.4", + "rocket", + "serde", + "serde_derive", + "unicase 2.6.0", + "unicase_serde", + "url", +] + [[package]] name = "rocket_http" version = "0.4.2" @@ -1041,6 +1084,7 @@ dependencies = [ "lazy_static", "rocket", "rocket_contrib", + "rocket_cors", "rust-crypto", "scrypt", "serde", @@ -1122,6 +1166,15 @@ dependencies = [ "lazy_static", ] +[[package]] +name = "thread_local" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d40c6d1b69745a6ec6fb1ca717914848da4b44ae29d9b3080cbee91d72a69b14" +dependencies = [ + "lazy_static", +] + [[package]] name = "time" version = "0.1.42" @@ -1175,6 +1228,25 @@ dependencies = [ "version_check 0.1.5", ] +[[package]] +name = "unicase" +version = "2.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "50f37be617794602aabbeee0be4f259dc1778fabe05e2d67ee8f79326d5cb4f6" +dependencies = [ + "version_check 0.9.1", +] + +[[package]] +name = "unicase_serde" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6ef53697679d874d69f3160af80bc28de12730a985d57bdf2b47456ccb8b11f1" +dependencies = [ + "serde", + "unicase 2.6.0", +] + [[package]] name = "unicode-bidi" version = "0.3.4" diff --git a/Cargo.toml b/Cargo.toml index 54931f1..c145035 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -7,6 +7,7 @@ edition = "2018" [dependencies] rocket = "0.4.2" rocket_contrib = { version = "0.4.2", features = ["diesel_sqlite_pool"] } +rocket_cors = "0.5.1" jwt = "0.4.0" diesel = { version = "1.4.3", features = ["sqlite", "chrono"] } diesel_migrations = "1.4.0" diff --git a/src/main.rs b/src/main.rs index 9aa80aa..9fcf701 100644 --- a/src/main.rs +++ b/src/main.rs @@ -4,6 +4,7 @@ extern crate rocket; #[macro_use] extern crate rocket_contrib; +extern crate rocket_cors; #[macro_use] extern crate diesel; #[macro_use] @@ -110,7 +111,18 @@ fn run_db_migrations(rocket: Rocket) -> Rocket { } pub fn build_rocket() -> Rocket { + // Make CORS options + let cors = rocket_cors::CorsOptions { + allowed_origins: rocket_cors::AllowedOrigins::All, + allowed_methods: vec![rocket::http::Method::Get, rocket::http::Method::Post] + .into_iter().map(From::from).collect(), + allowed_headers: rocket_cors::AllowedHeaders::all(), + send_wildcard: true, + ..Default::default() + }.to_cors().unwrap(); + let r = rocket::custom(build_config()) + .attach(cors) .attach(DbConn::fairing()) .mount("/", api::routes()); run_db_migrations(r)