use std::collections::HashMap;
use reifydb_runtime::context::rng::Rng;
use reifydb_value::Result;
#[derive(Debug, Clone, PartialEq, Eq)]
pub enum AuthStep {
Authenticated,
Failed,
Rejected {
reason: String,
},
Challenge {
payload: HashMap<String, String>,
},
}
pub trait AuthenticationProvider: Send + Sync {
fn method(&self) -> &str;
fn create(&self, rng: &Rng, config: &HashMap<String, String>) -> Result<HashMap<String, String>>;
fn authenticate(
&self,
stored: &HashMap<String, String>,
credentials: &HashMap<String, String>,
) -> Result<AuthStep>;
fn verify_challenge(
&self,
_stored: &HashMap<String, String>,
_challenge: &HashMap<String, String>,
_credentials: &HashMap<String, String>,
) -> Result<AuthStep> {
Ok(AuthStep::Failed)
}
}