From dd69fc99ea8e6229c49868a2734aec875ac0de72 Mon Sep 17 00:00:00 2001 From: Philippe Loctaux
Date: Mon, 3 Apr 2023 17:59:02 +0200
Subject: [PATCH] ezidam: added cors, http basic auth request guard
---
Cargo.lock | 38 +++++++++++++++
crates/ezidam/Cargo.toml | 2 +
crates/ezidam/src/cors.rs | 15 ++++++
crates/ezidam/src/guards.rs | 2 +
crates/ezidam/src/guards/basic_auth.rs | 67 ++++++++++++++++++++++++++
crates/ezidam/src/lib.rs | 4 ++
6 files changed, 128 insertions(+)
create mode 100644 crates/ezidam/src/cors.rs
create mode 100644 crates/ezidam/src/guards/basic_auth.rs
diff --git a/Cargo.lock b/Cargo.lock
index 860b192..aae1628 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -722,6 +722,7 @@ version = "0.1.0"
dependencies = [
"apps",
"authorization_codes",
+ "base64 0.21.0",
"database_pool",
"erased-serde",
"futures",
@@ -733,6 +734,7 @@ dependencies = [
"openid",
"refresh_tokens",
"rocket",
+ "rocket_cors",
"rocket_db_pools",
"rocket_dyn_templates",
"settings",
@@ -2379,6 +2381,23 @@ dependencies = [
"unicode-xid",
]
+[[package]]
+name = "rocket_cors"
+version = "0.6.0-alpha2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b12771b47f52e34d5d0e0e444aeba382863e73263cb9e18847e7d5b74aa2cbd0"
+dependencies = [
+ "http",
+ "log",
+ "regex",
+ "rocket",
+ "serde",
+ "serde_derive",
+ "unicase",
+ "unicase_serde",
+ "url",
+]
+
[[package]]
name = "rocket_db_pools"
version = "0.1.0-rc.3"
@@ -3362,6 +3381,25 @@ dependencies = [
"unic-common",
]
+[[package]]
+name = "unicase"
+version = "2.6.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "50f37be617794602aabbeee0be4f259dc1778fabe05e2d67ee8f79326d5cb4f6"
+dependencies = [
+ "version_check",
+]
+
+[[package]]
+name = "unicase_serde"
+version = "0.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6ef53697679d874d69f3160af80bc28de12730a985d57bdf2b47456ccb8b11f1"
+dependencies = [
+ "serde",
+ "unicase",
+]
+
[[package]]
name = "unicode-bidi"
version = "0.3.13"
diff --git a/crates/ezidam/Cargo.toml b/crates/ezidam/Cargo.toml
index d738b38..d849858 100644
--- a/crates/ezidam/Cargo.toml
+++ b/crates/ezidam/Cargo.toml
@@ -12,6 +12,8 @@ erased-serde = "0.3"
url = { workspace = true }
identicon-rs = "4.0"
futures = "0.3"
+base64 = "0.21.0"
+rocket_cors = "0.6.0-alpha2"
# local crates
database_pool = { path = "../database_pool" }
diff --git a/crates/ezidam/src/cors.rs b/crates/ezidam/src/cors.rs
new file mode 100644
index 0000000..2ebb5d5
--- /dev/null
+++ b/crates/ezidam/src/cors.rs
@@ -0,0 +1,15 @@
+use rocket::{Build, Rocket};
+use rocket_cors::{Cors, CorsOptions};
+
+fn cors() -> Cors {
+ CorsOptions {
+ allow_credentials: true,
+ ..Default::default()
+ }
+ .to_cors()
+ .expect("Failed to configure CORS")
+}
+
+pub fn rocket(rocket_builder: Rocket