From 375fc45f310476a0a49fc48054f6563c8e02e2f6 Mon Sep 17 00:00:00 2001 From: Akshay Date: Sun, 20 Dec 2020 17:48:31 +0530 Subject: fix cookies/cors, more logging --- Cargo.lock | 101 +++++++++++++++++++++++++++++++++---------------- Cargo.toml | 2 +- shell.nix | 1 + src/bin/server.rs | 17 ++++++++- src/handlers/rating.rs | 1 + src/handlers/users.rs | 4 ++ 6 files changed, 92 insertions(+), 34 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 55fc9f4..2f6aaaa 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -11,7 +11,7 @@ dependencies = [ "futures-core", "futures-sink", "log", - "pin-project", + "pin-project 0.4.23", "tokio", "tokio-util", ] @@ -37,14 +37,16 @@ dependencies = [ [[package]] name = "actix-cors" -version = "0.4.0" +version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d88ea83af46935098feec2e19a28c919b54eb3cbf0e239b330298e2e69d4b76b" +checksum = "3f3a3d5493dbc9b8769fe88c030d057ef8d2edc5728e5e26267780e8fc5db0be" dependencies = [ - "actix-service", "actix-web", "derive_more", "futures-util", + "log", + "once_cell", + "tinyvec 1.1.0", ] [[package]] @@ -83,7 +85,7 @@ dependencies = [ "log", "mime", "percent-encoding 2.1.0", - "pin-project", + "pin-project 0.4.23", "rand", "regex", "serde", @@ -173,7 +175,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0052435d581b5be835d11f4eb3bce417c8af18d87ddf8ace99f8e67e595882bb" dependencies = [ "futures-util", - "pin-project", + "pin-project 0.4.23", ] [[package]] @@ -233,7 +235,7 @@ dependencies = [ "futures-sink", "futures-util", "log", - "pin-project", + "pin-project 0.4.23", "slab", ] @@ -265,14 +267,14 @@ dependencies = [ "fxhash", "log", "mime", - "pin-project", + "pin-project 0.4.23", "regex", "serde", "serde_json", "serde_urlencoded", "socket2", "time 0.2.21", - "tinyvec", + "tinyvec 0.3.4", "url 2.1.1", ] @@ -832,9 +834,9 @@ dependencies = [ [[package]] name = "futures-channel" -version = "0.3.5" +version = "0.3.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f366ad74c28cca6ba456d95e6422883cfb4b252a83bed929c83abfdbbf2967d5" +checksum = "4b7109687aa4e177ef6fe84553af6280ef2778bdb7783ba44c9dc3399110fe64" dependencies = [ "futures-core", "futures-sink", @@ -842,21 +844,21 @@ dependencies = [ [[package]] name = "futures-core" -version = "0.3.5" +version = "0.3.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "59f5fff90fd5d971f936ad674802482ba441b6f09ba5e15fd8b39145582ca399" +checksum = "847ce131b72ffb13b6109a221da9ad97a64cbe48feb1028356b836b47b8f1748" [[package]] name = "futures-io" -version = "0.3.5" +version = "0.3.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "de27142b013a8e869c14957e6d2edeef89e97c289e69d042ee3a49acd8b51789" +checksum = "611834ce18aaa1bd13c4b374f5d653e1027cf99b6b502584ff8c9a64413b30bb" [[package]] name = "futures-macro" -version = "0.3.5" +version = "0.3.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d0b5a30a4328ab5473878237c447333c093297bded83a4983d10f4deea240d39" +checksum = "77408a692f1f97bcc61dc001d752e00643408fbc922e4d634c655df50d595556" dependencies = [ "proc-macro-hack", "proc-macro2", @@ -866,24 +868,24 @@ dependencies = [ [[package]] name = "futures-sink" -version = "0.3.5" +version = "0.3.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f2032893cb734c7a05d85ce0cc8b8c4075278e93b24b66f9de99d6eb0fa8acc" +checksum = "f878195a49cee50e006b02b93cf7e0a95a38ac7b776b4c4d9cc1207cd20fcb3d" [[package]] name = "futures-task" -version = "0.3.5" +version = "0.3.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bdb66b5f09e22019b1ab0830f7785bcea8e7a42148683f99214f73f8ec21a626" +checksum = "7c554eb5bf48b2426c4771ab68c6b14468b6e76cc90996f528c3338d761a4d0d" dependencies = [ "once_cell", ] [[package]] name = "futures-util" -version = "0.3.5" +version = "0.3.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8764574ff08b701a084482c3c7031349104b07ac897393010494beaa18ce32c6" +checksum = "d304cff4a7b99cfb7986f7d43fbe93d175e72e704a8860787cc95e9ffd85cbd2" dependencies = [ "futures-channel", "futures-core", @@ -892,7 +894,7 @@ dependencies = [ "futures-sink", "futures-task", "memchr", - "pin-project", + "pin-project 1.0.2", "pin-utils", "proc-macro-hack", "proc-macro-nested", @@ -1378,7 +1380,16 @@ version = "0.4.23" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ca4433fff2ae79342e497d9f8ee990d174071408f28f726d6d83af93e58e48aa" dependencies = [ - "pin-project-internal", + "pin-project-internal 0.4.23", +] + +[[package]] +name = "pin-project" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ccc2237c2c489783abd8c4c80e5450fc0e98644555b1364da68cc29aa151ca7" +dependencies = [ + "pin-project-internal 1.0.2", ] [[package]] @@ -1392,6 +1403,17 @@ dependencies = [ "syn", ] +[[package]] +name = "pin-project-internal" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8e8d2bf0b23038a4424865103a4df472855692821aab4e4f5c3312d461d9e5f" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + [[package]] name = "pin-project-lite" version = "0.1.7" @@ -1438,9 +1460,9 @@ dependencies = [ [[package]] name = "proc-macro-hack" -version = "0.5.18" +version = "0.5.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "99c605b9a0adc77b7211c6b1f722dcb613d68d66859a44f3d485a6da332b0598" +checksum = "dbf0c48bc1d91375ae5c3cd81e3722dff1abcf81a30960240640d223f59fe0e5" [[package]] name = "proc-macro-nested" @@ -1450,9 +1472,9 @@ checksum = "eba180dafb9038b050a4c280019bbedf9f2467b61e5d892dcad585bb57aadc5a" [[package]] name = "proc-macro2" -version = "1.0.21" +version = "1.0.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "36e28516df94f3dd551a587da5357459d9b36d945a7c37c3557928c1c2ff2a2c" +checksum = "1e0704ee1a7e00d7bb417d0770ea303c1bccbabf0ef1667dae92b5967f5f8a71" dependencies = [ "unicode-xid", ] @@ -1784,9 +1806,9 @@ checksum = "343f3f510c2915908f155e94f17220b19ccfacf2a64a2a5d8004f2c3e311e7fd" [[package]] name = "syn" -version = "1.0.41" +version = "1.0.54" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6690e3e9f692504b941dc6c3b188fd28df054f7fb8469ab40680df52fdcc842b" +checksum = "9a2af957a63d6bd42255c359c93d9bfdb97076bd3b820897ce55ffbfbf107f44" dependencies = [ "proc-macro2", "quote", @@ -1895,6 +1917,21 @@ version = "0.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "238ce071d267c5710f9d31451efec16c5ee22de34df17cc05e56cbc92e967117" +[[package]] +name = "tinyvec" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ccf8dbc19eb42fba10e8feaaec282fb50e2c14b2726d6301dbfeed0f73306a6f" +dependencies = [ + "tinyvec_macros", +] + +[[package]] +name = "tinyvec_macros" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cda74da7e1a664f795bb1f8a87ec406fb89a02522cf6e50620d016add6dbbf5c" + [[package]] name = "tokio" version = "0.2.22" @@ -2010,7 +2047,7 @@ version = "0.1.13" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6fb19cf769fa8c6a80a162df694621ebeb4dafb606470b2b2fce0be40a98a977" dependencies = [ - "tinyvec", + "tinyvec 0.3.4", ] [[package]] diff --git a/Cargo.toml b/Cargo.toml index 2c962b7..8ce728b 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -15,7 +15,7 @@ serde_json = "1.0" log = "0.4" pretty_env_logger = "0.4" actix-identity = "0.3.1" -actix-cors = "0.4.0" +actix-cors = "0.5" bigdecimal = "0.0.14" rand = "0.7" diff --git a/shell.nix b/shell.nix index 9805d80..9167821 100644 --- a/shell.nix +++ b/shell.nix @@ -29,5 +29,6 @@ in libmysqlclient jq python3 + insomnia ]; } diff --git a/src/bin/server.rs b/src/bin/server.rs index 5af3135..7c67e4f 100644 --- a/src/bin/server.rs +++ b/src/bin/server.rs @@ -24,9 +24,24 @@ async fn main() -> std::io::Result<()> { .wrap(IdentityService::new( CookieIdentityPolicy::new(&private_key) .name("user-login") + .domain("127.0.0.1") + .path("/") + .same_site(actix_web::cookie::SameSite::None) + .http_only(true) .secure(false), )) - .wrap(Cors::new().supports_credentials().finish()) + .wrap( + Cors::default() + .allowed_origin("http://127.0.0.1:8000") + .allowed_origin("http://localhost:8000") + .allow_any_method() + .allow_any_header(), + ) + .wrap( + middleware::DefaultHeaders::new() + .header("Access-Control-Allow-Credentials", "true") + .header("Access-Control-Expose-Headers", "set-cookie"), + ) .wrap(middleware::Logger::default()) .data(pool.clone()) .service( diff --git a/src/handlers/rating.rs b/src/handlers/rating.rs index 309c2c6..dfbeb3e 100644 --- a/src/handlers/rating.rs +++ b/src/handlers/rating.rs @@ -22,6 +22,7 @@ pub async fn add_rating( pool: web::Data, ) -> impl Responder { info!("Add rating hit: {:?}", rating_details.product_id); + info!("{:?}", cookie.identity()); let conn = pool.get().unwrap(); if let Some(uname) = cookie.identity() { let selected_user = customer diff --git a/src/handlers/users.rs b/src/handlers/users.rs index bff532c..73fca84 100644 --- a/src/handlers/users.rs +++ b/src/handlers/users.rs @@ -57,6 +57,10 @@ pub async fn login( login_details: web::Json, ) -> impl Responder { info!("Login hit"); + if let Some(uname) = cookie.identity() { + info!("Found existing cookie: {:?}", cookie.identity()); + return HttpResponse::Ok().finish(); + } let conn = pool.get().unwrap(); let entered_pass = &login_details.password; let selected_user = customer -- cgit v1.2.3