From bef3da2a567e3804e12355d9c3d5c09439dbe2ea Mon Sep 17 00:00:00 2001 From: Joel Klinghed Date: Thu, 17 Jul 2025 23:42:55 +0200 Subject: Humble beginnings Redirect to login if not logged in, on login session cookie is set and projects or reviews are listed. --- server/Cargo.lock | 28 ++++++++++++++++++++++++++++ server/Cargo.toml | 1 + server/src/auth.rs | 2 +- server/src/main.rs | 11 +++++++++++ 4 files changed, 41 insertions(+), 1 deletion(-) (limited to 'server') diff --git a/server/Cargo.lock b/server/Cargo.lock index cf2a209..52168cd 100644 --- a/server/Cargo.lock +++ b/server/Cargo.lock @@ -593,6 +593,7 @@ dependencies = [ "reqwest", "rmp-serde", "rocket", + "rocket_cors", "rocket_db_pools", "serde", "serial_test", @@ -2132,6 +2133,23 @@ dependencies = [ "version_check", ] +[[package]] +name = "rocket_cors" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cfac3a1df83f8d4fc96aa41dba3b86c786417b7fc0f52ec76295df2ba781aa69" +dependencies = [ + "http 0.2.12", + "log", + "regex", + "rocket", + "serde", + "serde_derive", + "unicase", + "unicase_serde", + "url", +] + [[package]] name = "rocket_db_pools" version = "0.2.0" @@ -3261,6 +3279,16 @@ version = "2.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "75b844d17643ee918803943289730bec8aac480150456169e647ed0b576ba539" +[[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.18" diff --git a/server/Cargo.toml b/server/Cargo.toml index 9cf031f..a634083 100644 --- a/server/Cargo.toml +++ b/server/Cargo.toml @@ -30,6 +30,7 @@ log.workspace = true pretty_assertions.workspace = true rmp-serde.workspace = true rocket = { version = "0.5.1", features = ["json", "secrets"] } +rocket_cors = "0.6.0" rocket_db_pools = { version = "0.2.0", features = ["sqlx_mysql"] } serde.workspace = true serial_test = "3.2.0" diff --git a/server/src/auth.rs b/server/src/auth.rs index edd794c..530b2ef 100644 --- a/server/src/auth.rs +++ b/server/src/auth.rs @@ -225,7 +225,7 @@ async fn login( ); let cookie = Cookie::build((SESSION_COOKIE, json::to_string(&session).unwrap())) - .path("/api") + .path("/") .max_age(max_age) .http_only(true) .build(); diff --git a/server/src/main.rs b/server/src/main.rs index 7a6b1b7..9a4f781 100644 --- a/server/src/main.rs +++ b/server/src/main.rs @@ -8,6 +8,7 @@ use rocket::http::Status; use rocket::response::status::{Custom, NotFound}; use rocket::serde::json::Json; use rocket::{futures, Build, Rocket, State}; +use rocket_cors::AllowedOrigins; use rocket_db_pools::{sqlx, Connection, Database}; use sqlx::Acquire; use std::path::PathBuf; @@ -1465,6 +1466,15 @@ async fn run_migrations(rocket: Rocket) -> fairing::Result { fn rocket_from_config(figment: Figment) -> Rocket { let basepath = "/api/v1"; + + let cors = rocket_cors::CorsOptions { + allowed_origins: AllowedOrigins::all(), + allow_credentials: false, + ..Default::default() + } + .to_cors() + .unwrap(); + rocket::custom(figment) .attach(Db::init()) .attach(AdHoc::try_on_ignite("Database Migrations", run_migrations)) @@ -1497,6 +1507,7 @@ fn rocket_from_config(figment: Figment) -> Rocket { translation_reviews, ], ) + .attach(cors) .attach(auth::stage(basepath)) .attach(git_root::stage()) .attach(authorized_keys::stage()) -- cgit v1.2.3-70-g09d2