diff --git a/backend/src/routes/family.rs b/backend/src/routes/family.rs index 506a4b0..e060e70 100644 --- a/backend/src/routes/family.rs +++ b/backend/src/routes/family.rs @@ -221,6 +221,7 @@ pub struct CreateMyFamilyResponse { )] pub async fn create_my_family( auth_session: AuthSession, + session: Session, State(db): State, Json(payload): Json, ) -> Result, StatusCode> { @@ -247,6 +248,17 @@ pub async fn create_my_family( .await .map_err(|_| StatusCode::INTERNAL_SERVER_ERROR)?; + let mut authorized_families: Vec = session + .get("authorized_families") + .await + .unwrap_or(None) + .unwrap_or_default(); + authorized_families.push(family.id); + session + .insert("authorized_families", authorized_families) + .await + .map_err(|_| StatusCode::INTERNAL_SERVER_ERROR)?; + Ok(Json(CreateMyFamilyResponse { family_id: family.id, user_id: current_user.id, diff --git a/backend/src/routes/oauth.rs b/backend/src/routes/oauth.rs index 511f84b..9bc1031 100644 --- a/backend/src/routes/oauth.rs +++ b/backend/src/routes/oauth.rs @@ -119,6 +119,21 @@ pub async fn google_callback( .await .map_err(|_| StatusCode::INTERNAL_SERVER_ERROR)?; + if let Some(family_id) = user.family_id { + let mut authorized_families: Vec = session + .get("authorized_families") + .await + .unwrap_or(None) + .unwrap_or_default(); + if !authorized_families.contains(&family_id) { + authorized_families.push(family_id); + session + .insert("authorized_families", authorized_families) + .await + .ok(); + } + } + let redirect_url = frontend_url.unwrap_or_else(|| "http://localhost:3000".to_string()); Ok(Redirect::temporary(&redirect_url))