diff options
author | Kjetil Orbekk <kj@orbekk.com> | 2022-10-06 19:41:34 -0400 |
---|---|---|
committer | Kjetil Orbekk <kj@orbekk.com> | 2022-10-06 19:41:34 -0400 |
commit | 806faef4b75173892ecea4ccd4a14178320c89a4 (patch) | |
tree | b77b07d5f353504580a158864c2098b46a4e038e | |
parent | 49a8ffab0c1fbac3f683d6fd186aec4b2bf8b0a0 (diff) |
Serve webapp from backend
-rw-r--r-- | server/.env | 1 | ||||
-rw-r--r-- | server/src/main.rs | 36 |
2 files changed, 22 insertions, 15 deletions
diff --git a/server/.env b/server/.env index 4609cab..14d8663 100644 --- a/server/.env +++ b/server/.env @@ -1,2 +1,3 @@ RUST_LOG=info ROCKET_PROFILE=development +WEBAPP_PATH=../webapp/dist/
\ No newline at end of file diff --git a/server/src/main.rs b/server/src/main.rs index 3c8409a..0e9fa84 100644 --- a/server/src/main.rs +++ b/server/src/main.rs @@ -1,15 +1,16 @@ #[macro_use] extern crate rocket; -use std::result::Result; use chrono::{DateTime, Utc}; +use rocket::fs::FileServer; use rocket::http::uri::Reference; -use rocket::http::{Cookie, CookieJar,Status}; -use rocket::response::Redirect; +use rocket::http::{Cookie, CookieJar, Status}; +use rocket::outcome::Outcome; use rocket::request::{self, FromRequest}; +use rocket::response::Redirect; use rocket::Request; use serde::{Deserialize, Serialize}; -use rocket::outcome::Outcome; +use std::result::Result; use openidconnect::core::{ CoreAuthenticationFlow, CoreClient, CoreProviderMetadata, CoreResponseType, CoreUserInfoClaims, @@ -34,17 +35,22 @@ struct User {} impl User { async fn from_request_helper(req: &Request<'_>) -> Result<User, anyhow::Error> { - let cookie = req.cookies().get_private(USER_COOKIE).ok_or( - anyhow::anyhow!("no cookie"))?; + let cookie = req + .cookies() + .get_private(USER_COOKIE) + .ok_or(anyhow::anyhow!("no cookie"))?; let user_cookie: UserCookie = serde_json::from_str(cookie.value())?; let client = keycloak_client().await; - let token = client.exchange_refresh_token(&user_cookie.refresh_token) - .request_async(async_http_client).await?; - let user_info: CoreUserInfoClaims = client.user_info(token.access_token().clone(), None)? - .request_async(async_http_client) - .await?; - log::info!("Got user_info: {:?}", user_info); + let token = client + .exchange_refresh_token(&user_cookie.refresh_token) + .request_async(async_http_client) + .await?; + let user_info: CoreUserInfoClaims = client + .user_info(token.access_token().clone(), None)? + .request_async(async_http_client) + .await?; + log::info!("Got user_info: {:?}", user_info); Ok(User {}) } } @@ -146,11 +152,11 @@ async fn keycloak_callback(jar: &CookieJar<'_>, code: &str, state: &str) -> Redi async fn main() -> Result<(), anyhow::Error> { dotenv::dotenv().ok(); env_logger::init(); - log::debug!("hello"); rocket::build() - .mount("/", routes![index, login, keycloak_callback]) + .mount("/api", routes![index, login, keycloak_callback]) + .mount("/", FileServer::from(std::env::var("WEBAPP_PATH").unwrap())) .launch() - .await; + .await?; Ok(()) } |