diff --git a/crates/collab/src/api.rs b/crates/collab/src/api.rs index 0630f1938b..f325d01004 100644 --- a/crates/collab/src/api.rs +++ b/crates/collab/src/api.rs @@ -74,6 +74,7 @@ async fn get_users(Extension(app): Extension>) -> Result, admin: bool, } @@ -81,16 +82,23 @@ async fn create_user( Json(params): Json, Extension(app): Extension>, ) -> Result> { - let user_id = app - .db - .create_user(¶ms.github_login, params.admin) - .await?; + let user = if let Some(invite_code) = params.invite_code { + let user_id = app + .db + .redeem_invite_code(&invite_code, ¶ms.github_login) + .await? + } else { + let user_id = app + .db + .create_user(¶ms.github_login, params.admin) + .await?; - let user = app - .db - .get_user_by_id(user_id) - .await? - .ok_or_else(|| anyhow!("couldn't find the user we just created"))?; + let user = app + .db + .get_user_by_id(user_id) + .await? + .ok_or_else(|| anyhow!("couldn't find the user we just created"))? + }; Ok(Json(user)) }