mod fields;
mod notifications;
mod sessions;
mod validation;
use alibi_core::{
AuthAccount, AuthContext, AuthError, AuthRequest, AuthResponse, AuthResult, AuthSchema,
AuthSession, AuthUser, CreateUser, CreateVerification, UpdateUser,
};
use chrono::{Duration, Utc};
pub(in crate::plugins) use fields::apply_creation_input_defaults;
pub(in crate::plugins) use fields::prepare_additional_user_fields;
pub(in crate::plugins) use notifications::run_notification;
pub(in crate::plugins) use notifications::run_owned_notification;
use serde::de::DeserializeOwned;
use serde_json::Value;
pub(in crate::plugins) use sessions::revoke_unproven_access;
pub(in crate::plugins) use sessions::session_response;
pub(in crate::plugins) use sessions::session_response_with_remember;
pub(in crate::plugins) use validation::JsonField;
pub(in crate::plugins) use validation::JsonFieldKind;
pub(in crate::plugins) use validation::RequestBody;
pub(in crate::plugins) use validation::is_valid_email;
pub(in crate::plugins) use validation::json_type;
pub(in crate::plugins) use validation::parse_body;
pub(in crate::plugins) use validation::parse_body_with_fields;
pub(in crate::plugins) use validation::parse_body_with_ignored_fields;
pub(in crate::plugins) use validation::parse_email;
pub(in crate::plugins) use validation::validation_response;
pub(in crate::plugins) async fn find_verification<S: AuthSchema>(
ctx: &AuthContext<S>,
identifier: &str,
) -> AuthResult<Option<alibi_core::verification::VerificationSnapshot>> {
ctx.verifications().find(identifier).await
}
pub(in crate::plugins) fn redirect(url: &str) -> AuthResponse {
AuthResponse::text(302, "")
.with_header("Location", url)
.with_header("content-type", "application/json")
}