Skip to main content

openauth_plugins/magic_link/
mod.rs

1//! Magic link authentication plugin.
2
3mod endpoints;
4mod options;
5mod payload;
6mod response;
7mod session_response;
8mod token;
9mod user_response;
10
11pub use options::{
12    MagicLinkEmail, MagicLinkFuture, MagicLinkOptions, MagicLinkRateLimit, MagicLinkSendContext,
13};
14pub use token::{default_key_hasher, TokenStorage};
15
16use openauth_core::plugin::{AuthPlugin, PluginRateLimitRule};
17
18use crate::VERSION;
19
20pub const UPSTREAM_PLUGIN_ID: &str = "magic-link";
21
22pub fn magic_link(options: MagicLinkOptions) -> AuthPlugin {
23    let rate_limit = options.rate_limit_rule();
24    AuthPlugin::new(UPSTREAM_PLUGIN_ID)
25        .with_version(VERSION)
26        .with_endpoint(endpoints::sign_in_magic_link_endpoint(options.clone()))
27        .with_endpoint(endpoints::verify_magic_link_endpoint(options))
28        .with_rate_limit(PluginRateLimitRule::new(
29            "/sign-in/magic-link",
30            rate_limit.clone(),
31        ))
32        .with_rate_limit(PluginRateLimitRule::new("/magic-link/verify", rate_limit))
33}