summaryrefslogtreecommitdiff
path: root/server/src/main.rs
diff options
context:
space:
mode:
authorKjetil Orbekk <kj@orbekk.com>2022-10-08 18:33:22 -0400
committerKjetil Orbekk <kj@orbekk.com>2022-10-08 18:33:22 -0400
commita7d833d6b7729f09bef891b0c8b7bd998ac17abf (patch)
tree018bba6c2ff1a58ed5b739939f63a3929d0dc662 /server/src/main.rs
parent30102e5da48b53806b33f04041a46bec4c3b2fa3 (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.rs28
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(