BLOG-94 fix: improve error handling for user retrieval
All checks were successful
Frontend CI / build (push) Successful in 1m8s
PR Title Check / pr-title-check (pull_request) Successful in 16s

This commit is contained in:
SquidSpirit 2025-08-01 13:10:28 +08:00
parent d349fd672c
commit ef7db7424a

View File

@ -46,18 +46,26 @@ impl ExchangeAuthCodeUseCase for ExchangeAuthCodeUseCaseImpl {
.exchange_auth_code(code, expected_nonce) .exchange_auth_code(code, expected_nonce)
.await?; .await?;
let saved_user = self let saved_user_result = self
.auth_repository .auth_repository
.get_user_by_source_id(&logged_in_user.issuer, &logged_in_user.source_id) .get_user_by_source_id(&logged_in_user.issuer, &logged_in_user.source_id)
.await; .await;
if saved_user.err() == Some(AuthError::UserNotFound) { match saved_user_result {
Ok(user) => {
logged_in_user.id = user.id;
}
Err(AuthError::UserNotFound) => {
let id = self let id = self
.auth_repository .auth_repository
.save_user(logged_in_user.clone()) .save_user(logged_in_user.clone())
.await?; .await?;
logged_in_user.id = id; logged_in_user.id = id;
} }
Err(e) => {
return Err(e);
}
};
Ok(logged_in_user) Ok(logged_in_user)
} }