diff options
author | Kjetil Orbekk <kj@orbekk.com> | 2022-10-08 18:33:22 -0400 |
---|---|---|
committer | Kjetil Orbekk <kj@orbekk.com> | 2022-10-08 18:33:22 -0400 |
commit | a7d833d6b7729f09bef891b0c8b7bd998ac17abf (patch) | |
tree | 018bba6c2ff1a58ed5b739939f63a3929d0dc662 /server/src/main.rs | |
parent | 30102e5da48b53806b33f04041a46bec4c3b2fa3 (diff) |
Add bridge table to db; introduce player ids from oauth subject ids
Diffstat (limited to 'server/src/main.rs')
-rw-r--r-- | server/src/main.rs | 28 |
1 files changed, 25 insertions, 3 deletions
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<Option<Table>, 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( |