mirror of
https://github.com/n08i40k/schedule-parser-rusted.git
synced 2025-12-06 09:47:50 +03:00
refactor(auth): interpret failure to find user as an error
This commit is contained in:
@@ -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()
|
||||||
|
|||||||
Reference in New Issue
Block a user