torii-auth-magic-link 0.3.1

Magic Link authentication plugin for Torii
Documentation

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();

// Create user manager
let user_manager = Arc::new(DefaultUserManager::new(user_storage.clone()));

// Register the plugin with your PluginManager
let mut plugin_manager = PluginManager::new(user_storage.clone(), session_storage.clone());
plugin_manager.register_plugin(MagicLinkPlugin::new(user_manager, user_storage.clone()));

// Generate a magic link token
let plugin = plugin_manager.get_plugin::<MagicLinkPlugin<DefaultUserManager<_>, _>>("magic_link").unwrap();
let token = plugin.generate_magic_token("user@example.com").await?;

// Verify the token when user clicks the link
let user = plugin.verify_magic_token(&token.token).await?;
# Ok(())
# }