use alibi_core::AuthResult;
use async_trait::async_trait;
use std::sync::Arc;
pub type OAuthSignupContext<'a> = super::OAuthInteractionContext<'a>;
#[derive(Debug, Clone)]
pub enum OAuthSignupRedirect {
Continue,
ConfiguredPage,
Page(String),
}
#[async_trait]
pub trait OAuthSignupPolicy: Send + Sync + std::fmt::Debug {
async fn should_redirect(
&self,
input: OAuthSignupContext<'_>,
) -> AuthResult<OAuthSignupRedirect>;
}
#[derive(Debug, Clone, Default)]
pub struct OAuthSignupConfig {
pub page: Option<String>,
pub should_redirect: Option<Arc<dyn OAuthSignupPolicy>>,
}