use crate::system::AuthToken;
use serde::{Deserialize, Serialize};
#[derive(Debug, PartialEq, Eq, Clone, Serialize, Deserialize)]
#[serde(untagged)]
pub enum Credential {
Token(IdentityToken),
Password(UserPassword),
}
impl Credential {
pub fn with_token(token: IdentityToken) -> Self {
Credential::Token(token)
}
pub fn with_password(password: UserPassword) -> Self {
Credential::Password(password)
}
}
#[derive(Debug, PartialEq, Eq, Clone, Serialize, Deserialize)]
pub struct UserPassword {
username: String,
password: String,
email: String,
serveraddress: String,
}
impl UserPassword {
pub fn new(username: String, password: String, email: String, serveraddress: String) -> Self {
Self {
username,
password,
email,
serveraddress,
}
}
}
#[derive(Debug, PartialEq, Eq, Clone, Serialize, Deserialize)]
pub struct IdentityToken {
identitytoken: String,
}
impl IdentityToken {
#[allow(dead_code)]
pub fn token(&self) -> String {
self.identitytoken.clone()
}
#[allow(dead_code)]
pub fn from_auth_token(auth_token: &AuthToken) -> Self {
Self {
identitytoken: auth_token.token(),
}
}
pub fn from_bare_token(token: String) -> Self {
Self {
identitytoken: token,
}
}
}