use super::{CredentialContext, Credentials, IdentityProvider};
use anyhow::Result;
use async_trait::async_trait;
#[derive(Clone)]
pub struct PasswordIdentityProvider {
username: String,
password: String,
}
impl PasswordIdentityProvider {
pub fn new(username: impl Into<String>, password: impl Into<String>) -> Self {
Self {
username: username.into(),
password: password.into(),
}
}
}
#[async_trait]
impl IdentityProvider for PasswordIdentityProvider {
async fn get_credentials(&self, _context: &CredentialContext) -> Result<Credentials> {
Ok(Credentials::UsernamePassword {
username: self.username.clone(),
password: self.password.clone(),
})
}
fn clone_box(&self) -> Box<dyn IdentityProvider> {
Box::new(self.clone())
}
}