alibi-plugins 0.8.0

Built-in authentication plugins and API metadata for Alibi
Documentation
use crate::authentication_helpers::{JsonField, JsonFieldKind, RequestBody};
use serde::{Deserialize, Serialize};

/// Body of the public `sendVerificationEmail` server operation.
#[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),
    ];
}

/// Query parameters for `GET /verify-email`.
#[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>,
}

/// Result of the verify-email core function.
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),
    ];
}

/// Successful result of the public `verifyEmail` server operation.
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct VerifyEmailResponse {
    pub status: bool,
    pub user: Option<alibi_core::wire::UserView>,
}