Magic Link authentication plugin for Torii
This plugin provides magic link authentication functionality, allowing users to sign in by clicking
a secure link sent to their email address rather than using a password.
Features
- Generate secure one-time use magic links
- Verify magic link tokens
- Automatic user creation if not exists
- Configurable token expiration
Example
use torii_auth_magic_link::MagicLinkPlugin;
use torii_core::{DefaultUserManager, plugin::PluginManager};
use std::sync::Arc;
# async fn example() -> Result<(), Box<dyn std::error::Error>> {
# let user_storage = Arc::new(torii_storage_sqlite::SqliteStorage::connect("sqlite::memory:").await.unwrap());
# let session_storage = user_storage.clone();
# user_storage.migrate().await.unwrap();
let user_manager = Arc::new(DefaultUserManager::new(user_storage.clone()));
let mut plugin_manager = PluginManager::new(user_storage.clone(), session_storage.clone());
plugin_manager.register_plugin(MagicLinkPlugin::new(user_manager, user_storage.clone()));
let plugin = plugin_manager.get_plugin::<MagicLinkPlugin<DefaultUserManager<_>, _>>("magic_link").unwrap();
let token = plugin.generate_magic_token("user@example.com").await?;
let user = plugin.verify_magic_token(&token.token).await?;
# Ok(())
# }