fix(sign on): add message about nonce expiration

This commit is contained in:
DecDuck
2024-12-26 21:30:08 +11:00
parent 21835858f1
commit 6a8d0af87d
2 changed files with 19 additions and 2 deletions

View File

@ -13,7 +13,7 @@ use url::Url;
use crate::{ use crate::{
db::{DatabaseAuth, DatabaseImpls}, db::{DatabaseAuth, DatabaseImpls},
remote::RemoteAccessError, remote::{DropServerError, RemoteAccessError},
AppState, AppStatus, User, DB, AppState, AppStatus, User, DB,
}; };
@ -78,7 +78,13 @@ pub fn fetch_user() -> Result<User, RemoteAccessError> {
.send()?; .send()?;
if response.status() != 200 { if response.status() != 200 {
info!("Could not fetch user: {}", response.text().unwrap()); let data = response.json::<DropServerError>()?;
info!("Could not fetch user: {}", data.status_message);
if data.status_message == "Nonce expired" {
return Err(RemoteAccessError::OutOfSync);
}
return Err(RemoteAccessError::InvalidCodeError(0)); return Err(RemoteAccessError::InvalidCodeError(0));
} }

View File

@ -22,6 +22,7 @@ pub enum RemoteAccessError {
InvalidResponse, InvalidResponse,
InvalidRedirect, InvalidRedirect,
ManifestDownloadFailed(StatusCode, String), ManifestDownloadFailed(StatusCode, String),
OutOfSync,
} }
impl Display for RemoteAccessError { impl Display for RemoteAccessError {
@ -51,6 +52,7 @@ impl Display for RemoteAccessError {
"Failed to download game manifest: {} {}", "Failed to download game manifest: {} {}",
status, response status, response
), ),
RemoteAccessError::OutOfSync => write!(f, "Server's and client's time are out of sync. Please ensure they are within at least 30 seconds of each other."),
} }
} }
} }
@ -73,6 +75,15 @@ impl From<u16> for RemoteAccessError {
impl std::error::Error for RemoteAccessError {} impl std::error::Error for RemoteAccessError {}
#[derive(Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct DropServerError {
pub status_code: usize,
pub status_message: String,
pub message: String,
pub url: String,
}
#[derive(Deserialize)] #[derive(Deserialize)]
#[serde(rename_all = "camelCase")] #[serde(rename_all = "camelCase")]
struct DropHealthcheck { struct DropHealthcheck {