From a348b1b99b243103048e2673258bc3f50affdeb2 Mon Sep 17 00:00:00 2001 From: n08i40k Date: Mon, 8 Sep 2025 07:15:22 +0400 Subject: [PATCH] refactor(auth): interpret failure to find user as an error --- src/routes/flow/telegram_auth.rs | 38 ++++++++++++++++++-------------- 1 file changed, 21 insertions(+), 17 deletions(-) diff --git a/src/routes/flow/telegram_auth.rs b/src/routes/flow/telegram_auth.rs index 9f3c804..c25c85a 100644 --- a/src/routes/flow/telegram_auth.rs +++ b/src/routes/flow/telegram_auth.rs @@ -49,25 +49,29 @@ pub async fn telegram_auth( let web_app_user = serde_json::from_str::(init_data.data_map.get("user").unwrap()).unwrap(); - let user = - match Query::find_user_by_telegram_id(app_state.get_database(), web_app_user.id).await { - Ok(Some(value)) => Ok(value), - _ => { - let new_user = ActiveUser { - id: Set(ObjectId::new().unwrap().to_string()), - username: Set(format!("telegram_{}", web_app_user.id)), // можно оставить, а можно поменять - password: Set(None), // ибо нехуй - vk_id: Set(None), - telegram_id: Set(Some(web_app_user.id)), - group: Set(None), - role: Set(UserRole::Student), // TODO: при реге проверять данные - android_version: Set(None), - }; + let user = match Query::find_user_by_telegram_id(app_state.get_database(), web_app_user.id) + .await + .expect("Failed to find user by telegram id") + { + Some(value) => value, + None => { + let new_user = ActiveUser { + id: Set(ObjectId::new().unwrap().to_string()), + username: Set(format!("telegram_{}", web_app_user.id)), // можно оставить, а можно поменять + password: Set(None), // ибо нехуй + vk_id: Set(None), + telegram_id: Set(Some(web_app_user.id)), + group: Set(None), + role: Set(UserRole::Student), // TODO: при реге проверять данные + android_version: Set(None), + }; - new_user.insert(app_state.get_database()).await - } + new_user + .insert(app_state.get_database()) + .await + .expect("Failed to insert user") } - .expect("Failed to get or add user"); + }; let access_token = utility::jwt::encode(&user.id); Ok(Response::new(&access_token, user.group.is_some())).into()