refactor(auth): interpret failure to find user as an error

This commit is contained in:
2025-09-08 07:15:22 +04:00
parent ff12ee5da2
commit a348b1b99b

View File

@@ -49,25 +49,29 @@ pub async fn telegram_auth(
let web_app_user = let web_app_user =
serde_json::from_str::<WebAppUser>(init_data.data_map.get("user").unwrap()).unwrap(); serde_json::from_str::<WebAppUser>(init_data.data_map.get("user").unwrap()).unwrap();
let user = let user = match Query::find_user_by_telegram_id(app_state.get_database(), web_app_user.id)
match Query::find_user_by_telegram_id(app_state.get_database(), web_app_user.id).await { .await
Ok(Some(value)) => Ok(value), .expect("Failed to find user by telegram id")
_ => { {
let new_user = ActiveUser { Some(value) => value,
id: Set(ObjectId::new().unwrap().to_string()), None => {
username: Set(format!("telegram_{}", web_app_user.id)), // можно оставить, а можно поменять let new_user = ActiveUser {
password: Set(None), // ибо нехуй id: Set(ObjectId::new().unwrap().to_string()),
vk_id: Set(None), username: Set(format!("telegram_{}", web_app_user.id)), // можно оставить, а можно поменять
telegram_id: Set(Some(web_app_user.id)), password: Set(None), // ибо нехуй
group: Set(None), vk_id: Set(None),
role: Set(UserRole::Student), // TODO: при реге проверять данные telegram_id: Set(Some(web_app_user.id)),
android_version: Set(None), 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); let access_token = utility::jwt::encode(&user.id);
Ok(Response::new(&access_token, user.group.is_some())).into() Ok(Response::new(&access_token, user.group.is_some())).into()