From 806faef4b75173892ecea4ccd4a14178320c89a4 Mon Sep 17 00:00:00 2001 From: Kjetil Orbekk Date: Thu, 6 Oct 2022 19:41:34 -0400 Subject: Serve webapp from backend --- server/src/main.rs | 36 +++++++++++++++++++++--------------- 1 file changed, 21 insertions(+), 15 deletions(-) (limited to 'server/src') 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 { - 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(()) } -- cgit v1.2.3