use crate::{
metrics::{AsPassFail, PassFail},
user::v1::UserDetails,
};
use serde::{Deserialize, Serialize};
#[derive(Clone, Debug, Serialize, Deserialize)]
pub struct AuthenticationRequest {
pub user_id: String,
pub access_token: String,
}
#[derive(Clone, Debug, Deserialize, Serialize)]
pub enum Outcome {
Known(UserDetails),
Unknown,
}
#[derive(Clone, Debug, Deserialize, Serialize)]
pub struct AuthenticationResponse {
pub outcome: Outcome,
}
impl AsPassFail for AuthenticationResponse {
fn as_pass_fail(&self) -> PassFail {
match self.outcome {
Outcome::Known(_) => PassFail::Pass,
Outcome::Unknown => PassFail::Fail,
}
}
}