From a7d833d6b7729f09bef891b0c8b7bd998ac17abf Mon Sep 17 00:00:00 2001 From: Kjetil Orbekk Date: Sat, 8 Oct 2022 18:33:22 -0400 Subject: Add bridge table to db; introduce player ids from oauth subject ids --- server/src/main.rs | 28 +++++++++++++++++++++++++--- 1 file changed, 25 insertions(+), 3 deletions(-) (limited to 'server/src/main.rs') diff --git a/server/src/main.rs b/server/src/main.rs index 87f95e4..22f9e19 100644 --- a/server/src/main.rs +++ b/server/src/main.rs @@ -1,12 +1,13 @@ use std::{collections::HashMap, env, str::FromStr, sync::Arc}; +use auth::AuthenticatedSession; use axum::{ extract::{Extension, Query}, response::Redirect, routing::get, Json, Router, }; -use protocol::UserInfo; +use protocol::{Table, UserInfo}; use tower_cookies::{Cookie, CookieManagerLayer, Cookies}; use tower_http::trace::TraceLayer; use tracing::info; @@ -52,7 +53,7 @@ async fn main() { let app_url = env::var("APP_URL").unwrap(); let state = Arc::new(ServerContext { - app_url: app_url, + app_url, authenticator: Authenticator::from_env(db_pool.clone()).await, db: db_pool, }); @@ -93,7 +94,28 @@ async fn user_info( None => return Ok(Json(None)), Some(v) => v, }; - Ok(Json(Some(extension.authenticator.user_info(&mut session).await?))) + Ok(Json(Some(UserInfo { + username: extension.authenticator.user_info(&mut session).await?, + table: get_table(&extension.db, &session).await?, + }))) +} + +async fn get_table( + db: &PgPool, + session: &AuthenticatedSession, +) -> Result, BridgeError> { + Ok(sqlx::query_as!( + Table, + r#" + select tables.id + from table_players players + natural join active_tables tables + where player_id = $1 + "#, + session.player_id + ) + .fetch_optional(db) + .await?) } async fn login_callback( -- cgit v1.2.3