alibi_plugins/email_verification/
types.rs1use crate::authentication_helpers::{JsonField, JsonFieldKind, RequestBody};
2use serde::{Deserialize, Serialize};
3
4#[derive(Debug, Clone, Serialize, Deserialize)]
6pub struct SendVerificationEmailRequest {
7 pub email: String,
8 #[serde(rename = "callbackURL", skip_serializing_if = "Option::is_none")]
9 pub callback_url: Option<String>,
10}
11
12impl RequestBody for SendVerificationEmailRequest {
13 const FIELDS: &'static [JsonField] = &[
14 JsonField {
15 name: "email",
16 kind: JsonFieldKind::Email,
17 required: true,
18 },
19 JsonField::string("callbackURL", false),
20 ];
21}
22
23#[derive(Debug, Clone, Serialize, Deserialize)]
25pub struct VerifyEmailQuery {
26 pub token: String,
27 #[serde(rename = "callbackURL", skip_serializing_if = "Option::is_none")]
28 pub callback_url: Option<String>,
29}
30
31pub(crate) enum VerifyEmailResult {
33 Redirect {
34 url: String,
35 session_token: Option<String>,
36 },
37 Json {
38 body: serde_json::Value,
39 session_token: Option<String>,
40 },
41}
42
43impl RequestBody for VerifyEmailQuery {
44 const FIELDS: &'static [JsonField] = &[
45 JsonField::string("token", true),
46 JsonField::string("callbackURL", false),
47 ];
48}
49
50#[derive(Debug, Clone, Serialize, Deserialize)]
52pub struct VerifyEmailResponse {
53 pub status: bool,
54 pub user: Option<alibi_core::wire::UserView>,
55}