use crate::authentication_helpers::{JsonField, JsonFieldKind, RequestBody};
use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct SendVerificationEmailRequest {
pub email: String,
#[serde(rename = "callbackURL", skip_serializing_if = "Option::is_none")]
pub callback_url: Option<String>,
}
impl RequestBody for SendVerificationEmailRequest {
const FIELDS: &'static [JsonField] = &[
JsonField {
name: "email",
kind: JsonFieldKind::Email,
required: true,
},
JsonField::string("callbackURL", false),
];
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct VerifyEmailQuery {
pub token: String,
#[serde(rename = "callbackURL", skip_serializing_if = "Option::is_none")]
pub callback_url: Option<String>,
}
pub(crate) enum VerifyEmailResult {
Redirect {
url: String,
session_token: Option<String>,
},
Json {
body: serde_json::Value,
session_token: Option<String>,
},
}
impl RequestBody for VerifyEmailQuery {
const FIELDS: &'static [JsonField] = &[
JsonField::string("token", true),
JsonField::string("callbackURL", false),
];
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct VerifyEmailResponse {
pub status: bool,
pub user: Option<alibi_core::wire::UserView>,
}