openauth_plugins/magic_link/
mod.rs1mod 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}