use nethsm::{Credentials, Passphrase, UserId, UserRole};
use serde::{Deserialize, Serialize};
use zeroize::Zeroize;
#[derive(Clone, Debug, Deserialize, Eq, Hash, PartialEq, Serialize, Zeroize)]
pub struct ConfigCredentials {
#[zeroize(skip)]
role: UserRole,
#[zeroize(skip)]
name: UserId,
passphrase: Option<String>,
}
impl ConfigCredentials {
pub fn new(role: UserRole, name: UserId, passphrase: Option<String>) -> Self {
Self {
role,
name,
passphrase,
}
}
pub fn get_name(&self) -> UserId {
self.name.clone()
}
pub fn get_role(&self) -> UserRole {
self.role
}
pub fn get_passphrase(&self) -> Option<&str> {
self.passphrase.as_deref()
}
pub fn set_passphrase(&mut self, passphrase: String) {
self.passphrase = Some(passphrase)
}
pub fn has_passphrase(&self) -> bool {
self.passphrase.is_some()
}
}
impl From<ConfigCredentials> for Credentials {
fn from(value: ConfigCredentials) -> Self {
Self::new(value.name, value.passphrase.map(Passphrase::new))
}
}